未选中的框
<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">
复选框
<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应用程序jQuery与JavaScript库非常相似,其中选择状态存储为类值的一部分。从而使使用 isSelected() 变得困难。已经尝试了所有可能的努力,但它要么该方法取消选中已经复选框,要么抛出错误。我使用 getAttribute() 来获取类并检查它是否包含定义文本,但如您所见,该类具有预定义的文本(tick-a),并在选中该框时更改为 ((tick-a) 选中)。这就是我遇到困难的重点。将不胜感激所提供的帮助。也检查了相关主题,但没有帮助。
我不太确定你在这里的意思,但查看你未经检查和检查的代码片段,没有添加"检查"类,class="tick-a"
.所以checkBoxClass.contains("tick-a checked")
永远不会是真的。
只是一个快速更新....自己想出了解决方案。在正确查看了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) {
}
}
坦克斯