2015-09-07 62 views
1

我在使用Codeception和PHPBrowser webdriver编写一些功能测试。在Codeception中的页面上循环链接测试

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方法元素的集合,而我不能确定是否既不显示它擦伤作为一个对象来遍历页面。

回答

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

+0

谢谢!在文档中错过了这个方法,他们应该在那里添加一些东西。 – Ucinorn