在代码测试中循环浏览页面上的链接

时间:2015-09-07 04:59:59

标签: php testing codeception

我正在使用Codeception和PHPBrowser webdriver编写一些功能测试。

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方法获取元素集合的任何方法,我不确定是否将它作为要遍历的对象呈现的页面呈现。

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用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