【问题标题】:Loop through links on a page in Codeception Tests在 Codeception 测试中循环浏览页面上的链接
【发布时间】:2015-09-07 04:59:59
【问题描述】:

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

【问题讨论】:

    标签: php testing codeception


    【解决方案1】:

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

    【讨论】:

    • 谢谢!错过了文档中的那个方法,他们应该在那里添加一些东西。
    猜你喜欢
    • 2014-09-23
    • 1970-01-01
    • 2021-02-16
    • 2020-12-13
    • 2017-12-14
    • 2010-09-10
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    相关资源
    最近更新 更多