【发布时间】: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