我正在使用Selenium在html页面上测试操作。我正在处理的那个包含多个复选框列表。我的selenium脚本执行以下操作: - 单击下拉列表以显示复选框列表
- 点击所有复选框
- 点击下拉列表以关闭复选框列表
- 重复下一个清单
问题是,对于浏览器而言脚本运行速度太快,并且没有检查某些框,因此我经常进行多次测试 为了解决我的问题,我试图制作一个方法,检查是否 选中复选框,如果没有,那么我再次点击但它不起作用,它增加了我的测试时间。到目前为止我的代码在这里:
public void clickClearanceListBox(int numberInList) throws InterruptedException {
int iteration = countTheNumberOfElement("//div[5]/div["+numberInList+"]/div[2]");
for(int i = 1; i <= iteration; i++) {
String xpathBox ="//div["+numberInList+"]/div[2]/div["+i+"]/div/div/label/span/span[2]";//xpath de la checkbox
String xpathInput = "//div["+numberInList+"]/div[2]/div["+i+"]/div/div/label/input";
clickTheDOMbyJs(xpathBox);
while(!checkBoxChecked(xpathInput)) {
Thread.sleep(200);
clickTheDOMbyJs(xpathBox);
}
}
}
或者:
public void clickClearanceListBox(int numberInList) throws InterruptedException {
int iteration = countTheNumberOfElement("//div[5]/div["+numberInList+"]/div[2]");
for(int i = 1; i <= iteration; i++) {
String xpathBox ="//div["+numberInList+"]/div[2]/div["+i+"]/div/div/label/span/span[2]";//xpath de la checkbox
String xpathInput = "//div["+numberInList+"]/div[2]/div["+i+"]/div/div/label/input";
clickTheDOMbyJs(xpathBox);
while(!checkBoxChecked(xpathInput)) {
Thread.sleep(200);
}
}
}
答案 0 :(得分:1)
看起来你需要在这里使用WebDriverWait。首先,等待下拉列表完全加载,然后等待复选框可见。
虽然对你说了一句警告。这些xpath可能非常脆弱,你的测试很容易破解。您应该考虑使用id,类或其他属性来查找这些不同的元素。
答案 1 :(得分:0)
我设法通过检查我的复选框的属性“value”是否具有值“true”来实现。虽然属性值为false,但这意味着仍然没有检查浏览器的复选框,所以我等待...这极其缓慢,但至少它每次都在工作。脚本点击复选框后,我这样做:
{{1}}