Selenium:如何断言检查所有复选框?

时间:2011-05-18 15:19:21

标签: xpath selenium selenium-rc selenium-ide

Decimal totalCheckboxes = selenium.GetXpathCount("//input[@type='checkbox']");
  for (int i = 1; i < totalCheckboxes + 1; i++) 
        {
            // Assert attempt 1
            //Assert.IsTrue(selenium.IsChecked("/descendant-or-self::input[@type='checkbox'][" + i + "]"));

            // Assert attempt 2
            //Assert.IsTrue(selenium.IsChecked("//input[@type='checkbox'][" + i + "]")); 
        }

我需要断言多个复选框被选中。复选框的数量并不总是固定的,因为它们取决于我的搜索条件。此外,复选框具有不同的ID和名称。例如,对于第一个复选框,id =“ctl07_ctl01_ctl01_cbxRepeater_e5962e80-ca07-42e3-908f-1217ef5787d4”name =“ctl07 $ ctl01 $ ctl01 $ cbxRepeater_e5962e80-ca07-42e3-908f-1217ef5787d4”

并且对于第二个复选框,id =“ctl07_ctl01_ctl03_cbxRepeater_c094f428-7ead-4ded-a11b-5824be49a95b”name =“ctl07 $ ctl01 $ ctl03 $ cbxRepeater_c094f428-7ead-4ded-a11b-5824be49a95b”

等以下复选框。

我已经尝试了几件事来添加一个断言来断言复选框被选中(断言尝试1和上面的断言尝试2),但是当我运行测试时,它仍然在那时失败。我得到的错误:

Selenium.SeleniumException: ERROR: Element /descendant-or-self::input[@type='checkbox'][1] not found
Selenium.SeleniumException: ERROR: Element //input[@type='checkbox'][2] not found

对此的任何帮助都将受到高度赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:2)

尝试:

Assert.IsTrue(selenium.IsChecked("xpath=(//input[@type='checkbox'])[" + i + "]")); 

请注意添加()

()表示首先评估我(如您所料)。这允许您执行(...)[1]来查找()中评估的xpath的第一个元素。