java - 根据答案,某些字段仍处于隐藏状态的调查
问题描述
我正在尝试使调查自动化。它有是和没有问题。根据答案,有些问题仍然隐藏。
这是NO按钮
<label class="btn btn-primary ng-pristine ng-untouched ng-empty ng-valid ng-valid-required" ng-model="question.answer" ng-required="question.isOptional == false" uib-btn-radio="false" ng-change="clearIsValid(question);ifHasDependency(question,'BOOLEAN',$index);">No</label>
</div>"
我试过这个:
for (int i = 17; i <= 100; i++) {
for(int i=1;i<=200;i++ ){
Thread.sleep(1000);
if (driver.findElement(By.xpath("//*[@id=\"ngdialog2\"]/div[2]/span/wizard/div/div[4]/div/div/wizard-step["+i+"]/ng-form/ng-transclude/div[2]/div/div/label[1]")).isDisplayed()){
driver.findElement(By.xpath("//*[@id=\"ngdialog2\"]/div[2]/span/wizard/div/div[4]/div/div/wizard-step["+i+"]/ng-form/ng-transclude/div[2]/div/div/label[1]")).click();
}else{
System.out.println("Question number " + i + " is missing.");
}
}
结果是:
org.openqa.selenium.ElementNotVisibleException: element not visible
请帮助:)谢谢
解决方案
你可以试试这个:
for (int i = 17; i <= 100; i++) {
for(int i = 1; i <= 200; i++){
Thread.sleep(1000);
// locate element
WebElement element = driver.findElement(By.xpath("//*[@id=\"ngdialog2\"]/div[2]/span/wizard/div/div[4]/div/div/wizard-step["+i+"]/ng-form/ng-transclude/div[2]/div/div/label[1]"));
try {
// wait until element will be clickable
new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(element));
element.click(); // click on element
}catch (Exception e){
System.out.println("Question number " + i + " is missing.");
}
}
}
注意:你必须做一些导入:
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
PS:作为源代码elementToBeClickable()
告诉:
public static ExpectedCondition<WebElement> elementToBeClickable(final WebElement element) {
return new ExpectedCondition() {
public ExpectedCondition<WebElement> visibilityOfElement = ExpectedConditions.visibilityOf(element);
public WebElement apply(WebDriver driver) {
WebElement elementx = (WebElement)this.visibilityOfElement.apply(driver);
try {
return elementx != null && elementx.isEnabled()?elementx:null;
} catch (StaleElementReferenceException var4) {
return null;
}
}
public String toString() {
return "element to be clickable: " + element;
}
};
}
该元素将被证明可见性以及是否启用了元素。换句话说,如果元素准备好接收点击它。
推荐阅读
- python - 在 Django Admin 中为文件添加导出格式
- javascript - 如何搜索网页上的文本是否与数组中的数据匹配?
- c - Perl Win32::API – 未检测到依赖 DLL
- android - Android MPChart 不显示任何数据
- javascript - find() 方法在我的 vanilla javascript 项目中不起作用
- javascript - JavaSript:为什么我的代码要修改原始数据对象上的对象数组?
- laravel - 如何在 plesk windows 服务器上运行 laravel 6 的计划任务
- php - 如何为简单视图制作准备好的声明?
- rust - 是否可以向下转换 Arc
到弧 >? - python - osx 上的比特币核心和 bitcoinlib 套接字错误