Selenium webdriver webelemenet.isSelected()返回不正确的值

时间:2014-04-30 22:42:47

标签: java selenium selenium-webdriver webdriver

我正在尝试检查复选框是否已选中,为此我使用的是isSelected。 我的复选框是div

div class="mainSprite chkBox" data-dojo-attach-event="onclick:toggle" data-dojo-attach-point="chkNode"

我发现带有xpath的div和isSelected总是返回false,无论天气如何,都会选中复选框。 我正在使用slenium webdriver 2.40和FF28

4 个答案:

答案 0 :(得分:2)

我有类似的情况。一个线索是:

<table id="dijit__TemplatedMixin_14" class="chkBoxCntr chkBoxChecked"...

使用FireBug我必须检查并取消选中文本框,然后查看html,了解我的元素的属性是不同的。然后我写了一个jQuery来找到差异。下面是一个示例函数,它使用了两个不同的return语句。

@SuppressWarnings("unchecked")
    public List<WebElement> getSelectedItems() throws InterruptedException {


        List<WebElement> list =  (List<WebElement>) ((JavascriptExecutor) driver)
                .executeScript("return jQuery.find('[class*=\"FIChecked\"]')");
        //.executeScript("return jQuery.find('[checked=\"checked\"]')");

        return list;
    }

使用它作为起点并稍微进行搜索。我猜是

<table id="dijit__TemplatedMixin_14" class="chkBoxCntr chkBoxChecked" widgetid="dijit__TemplatedMixin_14">

将切换到

 <table id="dijit__TemplatedMixin_14" class="chkBoxCntr" widgetid="dijit__TemplatedMixin_14">

未选择项目时。因此,如果未选中每个框,则调用getSelectedItems()。size应该等于0.

答案 1 :(得分:0)

如果在您的情况下,复选框的XPATH看起来像//*[@id='XXXXX']/div[2]

然后在HTML中,转到路径//*[@id='XXXXX']/div[1]/input。这将有type="checkbox"

使用“isSelected”方法

但是,如果您想选中该复选框,则应仅使用//*[@id='XXXXX']/div[2]

答案 2 :(得分:0)

如果它不是一个复选框,而div似乎是一个复选框,你需要创建一个自定义函数,当你点击它时,它会根据div的改变属性来回复你的布尔值。

在我的一个案例中,当我点击这种div cum复选框时,另一个类是添加div标签的class属性。

功能看起来像,

public boolean checkStatus(WebElement element,String attribute,String value){

if(element.getAttribute(attribute).contains(value){
return true;
}
else{
return false;
}

}

并调用方法

obj.checkStatus(ele,"class","chkTrue");

其中&#34; chkTrue&#34;是div中添加的附加类。

答案 3 :(得分:0)

当选中div复选框时,它是@class,或者它的祖先的@class应该更改为
“.. .. *检查”课程,对此进行判断。