如何在代码中选择第n个元素

时间:2014-06-30 08:03:36

标签: php selenium-webdriver codeception

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

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

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

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

有什么想法吗?

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这适用于我,你也可以使用这个

$ I-> checkOption( '[名称= “发表”]');

对于问题:

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

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

  2. $ I->点击('#side-menu li:nth-​​child(2)'); - (您有侧边菜单,需要从子菜单中选择项目)

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