未选中Box
<input data-track-event="my_account" data-track-action="newsletter-unselect" data-track-data="Page[My Account]|<-vertical->|<-horizontal->|<-rel_vertical->|<-rel_horizontal->|Newsletters|Business - checkbox|Pos[3:8]|" type="checkbox" name="newsletters[]" id="f-newsletters-business" value="business" class="tick-a">
checkedBox
<input data-track-event="my_account" data-track-action="newsletter-unselect" data-track-data="Page[My Account]|<-vertical->|<-horizontal->|<-rel_vertical->|<-rel_horizontal->|Newsletters|Style - checkbox|Pos[5:8]|" type="checkbox" name="newsletters[]" id="f-newsletters-independent_woman" value="independent_woman" class="tick-a" checked="">
我的代码
public void checkboxIsSelected(By by, String text) {
try {
String checkBoxClass = driver.findElement(by).getAttribute("class");
if (checkBoxClass.contains("tick-a checked")) {
log.log("CheckBox is already selected.... Move On.");
}
} catch (Exception e) {
log.log("CheckBox NOT checked... Pls Select to avail of: " + text);
driver.findElement(by).click();
log.log("CheckBox selected..... continue.");
}
}
我需要检查复选框是否已选中。基于我所做的研究,我发现有一些常见的web-app jQuery与JavaScript库非常相似,其中选择状态存储为类值的一部分....从而使得难以使用isSelected( )。尝试了所有可能的努力,但它的方法取消检查已经复选框或抛出错误。 我使用getAttribute()获取类并检查它是否包含定义文本,但正如您所看到的,该类具有预定义文本(tick-a)并在选中此框时更改为((tick-a)checked) 。这就是我遇到困难的重点。 将欣赏提供的帮助。还检查了相关主题但没有帮助。
答案 0 :(得分:0)
我不太清楚你的意思,但是看看未经检查和检查过的代码片段,“已检查”类没有添加class="tick-a"
。所以checkBoxClass.contains("tick-a checked")
永远不会成真。
答案 1 :(得分:0)
快速更新......自己想出解决方案。在正确看了javascript之后,我发现我指的是错误的元素。下面的编码。
public void checkboxIsSelected(By by, String text) {
try {
if (!driver.findElement(by).isSelected()) {
log.log("CheckBox NOT checked... Pls Select to avail of: " + text);
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].click()", driver.findElement(by));
log.log("checkBox clicked..... Move On.");
Thread.sleep(3000);
//driver.findElement(by).click();
}else
{
log.log("CheckBox is ALREADY selected.... Move On.");
}
} catch (Exception e) {
}
}
坦