【问题标题】:How to select nth element in codeception如何在codeception中选择第n个元素
【发布时间】:2014-06-30 08:03:36
【问题描述】:

我有一个表格,每行都有复选框。用户可以选择一些行并删除它们,我也有这个“全选”复选框。 例如,我想测试选择和删除两行,也单击全选并删除它们。 所以我需要检查第一个测试的第二个和第三个复选框,第二个测试的第一个...

我找不到选择第 n 个元素的方法,我能找到的唯一方法是通过 xpath 选择,所以我尝试了这个没有运气:

$I->checkOption("(//input[@type='checkbox'])[2]");

错误是 smt。喜欢//html(//input[@type='checkbox'])[2] is invalid。 显然 codeception 正在修改选择器,所以我尝试使用 WebDriverBy 类但我找不到将它作为参数传递的方法...

有什么想法吗?

PS:这不是实际情况,只是一个描述问题的简单例子......

【问题讨论】:

  • 您是否尝试移除支架? "//输入[@type='checkbox'][2]"
  • @Algiz 不起作用,因为每个复选框都在 td 元素内。我需要括号,除非复选框是兄弟姐妹...
  • 据我了解 XPATH(这可能非常棘手),第一部分(“//input[@type='checkbox']”)将构建节点列表,而第二部分("[2]") 将采用列表的第二个元素。它没有兄弟姐妹的概念。你给的答案和我的一样。 "//input" 是一个相对 XPATH,而 "/descendant" 是一个绝对 XPATH,它将在所有节点中锁定。
  • 是的,这确实很棘手 :) 这个answer 有一个很好的解释......

标签: php selenium-webdriver codeception


【解决方案1】:

我从this answer 找到了一种方法。 就是这样:

$I->checkOption("/descendant::input[@type='checkbox'][2]");

【讨论】:

    【解决方案2】:

    这对我有用,你也可以使用这个

    $I->checkOption('[name="published"]');

    对于问题:

    我们可以通过以下方式找到第n个元素:

    1. $I->click("table#races-table tbody tr:first-child td:last-child button")- 表格(如果你知道第一个孩子和最后一个孩子)

    2. $I->click('#side-menu li:nth-child(2)');- (您拥有并且需要从子菜单中选择项目的侧边菜单)

    3. $I->selectOption('.radio-tab:nth-child(1)', '1'); -- (如果表单中有多个,则选择单选按钮)

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 2015-05-30
      • 1970-01-01
      • 2013-04-26
      • 2018-11-17
      • 2016-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多