当使用Selenium2 / Webdriver将其编码为div时,将检查如何断言复选框

时间:2012-09-12 14:36:19

标签: css checkbox webdriver selenium-webdriver

我有一个不是“真实”复选框的复选框。 CSS看起来像:

<li id="privileges:1" class="ui-tree-parent default" data-rowkey="1">
   <div class="ui-tree-node ui-state-default" aria-checked="true" aria-selected="true" aria-expanded="true" role="treeitem">
      <span class="ui-helper-clearfix ui-tree-node-content ui-corner-all ui-tree-selectable-node">
         <span class="ui-tree-icon ui-icon ui-icon-triangle-1-s"></span>
         <span></span>
         <div class="ui-tree-checkbox ui-widget">
            <div class="ui-tree-checkbox-box ui-widget ui-corner-all ui-state-default">
               <span class="ui-tree-checkbox-icon ui-icon ui-icon-check"></span>

选中复选框后会出现最后一个跨度。

我的同事有以下代码,经过审核后似乎是黑魔法并且不应验证任何内容:

WebElement checkedBox = findElementByXpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div");
@SuppressWarnings("unused")
Boolean isChecked;
isChecked = checkedBox.findElement(By.xpath("//li[@id='privileges:1']/div[@aria-checked='true']/span/div/div")).isSelected();

使用Selenium2 / Webdriver检查验证复选框的最佳方法是什么?

这不起作用:

WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isEnabled());

也不是:

WebElement checkedBox = findElementByClass("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']");
assertTrue(checkedBox.isDisplayed());

1 个答案:

答案 0 :(得分:1)

你有句点/句点,空格应该在XPath中。

句点/ fullstop仅适用于CSS选择器。此外,您似乎正在使用By ClassName函数并传入XPath查询。我认为这只是一个错字。

这就是你所拥有的:

//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']

应该是:

//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon ui-icon ui-icon-check']

提示以防您不知道:如果您打开Chrome开发者工具,请直接转到控制台,输入:

$x("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon.ui-icon.ui-icon-check']")

你会看到它什么都不返回。

对此做同样的事情:

$x("//li[@id='privileges:1']/div/span/div/div/span[@class='ui-tree-checkbox-icon ui-icon ui-icon-check']")

它会返回一些东西。 Firebug和Chrome Developer工具都可用于执行CSS XPath选择器。因此,您可以查看Selenium或您正在使用的选择器是否存在问题。