在 Codeception 测试(webdriver)中创建可点击节点(web 元素)列表

Create a list of clickable nodes (web elements) in Codeception test (webdriver)

我在 Codeception 验收测试中使用 WebDriver 模块。

在测试中,我需要从网页创建节点(网络元素)列表,然后单击 foreach 循环中的每个节点。节点是主要的导航菜单项。查看屏幕截图。

screen shot

我尝试使用一个名为 grabMultiple("//nav[@class='nav-container']/ul/li/a") 的内置方法,但它 returns 一个名称列表("Ready to Wear" 等)和 click方法无法单击此列表的此类元素。

在 Codeception 中有什么方法可以创建可点击的节点列表吗?

当我使用以下代码时:

$itemsOfMainNav = $I->grabMultiple("//nav[@class='nav-container']/ul/li/a");

foreach($itemsOfMainNav as $item){
    $I->click($item);
}

我遇到错误:

1) 未能检查主要类别是否可在 101_CategoryFlowCept 中访问 (tests\acceptance1_CategoryFlowCept.php)

步骤我点击"READY TO WEAR" 失败 Link 或按钮或 CSS 或未找到具有 'READY TO WEAR' 的 XPath 元素。

场景步骤:

  1. $I->点击("READY TO WEAR")
  2. $I->grabMultiple("//导航[@class='nav-container']/ul/li/a")
  3. $I->等待(1)

您可以获取 class 属性并将其用于点击。

$linkClasses = $I->grabMultiple("//nav[@class='nav-container']/ul/li/a", 'class');
foreach ($linkClasses as $linkClass) {
  $I->click(['class' => $linkClass]);
}

根据 Naktibalda 的建议,我创建了以下代码并且它适用于我:

$mainNavLinks = $I->grabMultiple("//nav[@class='nav-container']/ul/li/a", 'href'); 
foreach ($mainNavLinks as $link) { 
    $I->amOnUrl($link); 
}