php - 在 Codeception 测试中循环访问页面上的链接

标签 php testing codeception

我正在使用 Codeception 和 PHPBrowser 网络驱动程序编写一些功能测试。

Codeception 使用 CSS 或 XPath 中的特定引用来检查页面上的元素。

但我希望能够遍历菜单中的所有链接,单击它并运行测试以查看链接是否有效。

即。如果我的菜单是这样的:

<ul id='nav'>
<li><a>Link1</a></li>
<li><a>Link2</a></li>
<li><a>Link3</a></li>
<li><a>Link4</a></li>
<li><a>Link5</a></li>
</ul>

我希望能够遍历链接并传递其索引:

$links = somefunctiontogetalllinks();
for ($x = 0; $x <= count($links); $x++) {
   codeceptionTest($x);
} 

然后测试可以使用CSS伪选择器引用链接:

public function codeceptionTest($index) {
   $i->click('#nav > li:nth-child(' . $index . ') > a');
   $I->see('Page Content');
}

我无法找到使用 PHPbrowser 或 Codeception 方法获取元素集合的任何方法,而且我不确定是否将其抓取的页面呈现为要遍历的对象。

最佳答案

您是否尝试过使用 grabMultiple 方法? http://codeception.com/docs/modules/PhpBrowser#grabMultiple

https://github.com/Codeception/Codeception/blob/faa5fb331eb15760bc88f284183f367df5a26a39/src/Codeception/Lib/InnerBrowser.php#L948

它返回单个属性值的列表,但如果您的所有项目都具有 id 或 href 属性,它应该足够好。

如果你真的想获取节点,实现你自己的方法。

将getMultiple 方法复制到Helper\Functional 类,根据需要重命名和修改。 http://codeception.com/docs/06-ReusingTestCode#Modules-and-Helpers

关于php - 在 Codeception 测试中循环访问页面上的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32431362/

相关文章:

php - Mysql,在任何一年的日月之间更新表

php - 部分匹配

python - 如何测试从网络数据解析?

ruby-on-rails - Rails 形式测试 : post directly or through form?

laravel-4 - Codeception API 测试 : stuck at passing json payload to REST service

javascript - 添加控件以显示莫里斯图

php - MySQL:分组并计算多个字段

testing - 为什么新的 gradle 测试过滤功能不适用于我的构建脚本?

codeception - 使用 codeception 计算某个类在页面中出现的次数

php - Codeception、架构 Global 和 Suite Helpers/PHP