我正在尝试检查复选框是否已选中,为此我使用的是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
答案 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应该更改为
“.. .. *检查”课程,对此进行判断。