我正试图从一个下拉选项中选择一个选项。如果没有下拉选项可见,那么脚本执行应该继续。
请在下面找到我的代码
List<WebElement> drop_down_options = driver.findElements(By.className("mat-option"));
if (drop_down_options.size() == 0) {
System.out.println("drop down options are not visible");
} else {
drop_down_options.get(0).click();
}
在这里,如果没有下拉选项,执行脚本需要很长时间。在我的网页中,有些下拉选项是被禁用的(有默认值),所以我不想点击或选择该选项。
但是在我上面提到的第一行代码中,它卡住了一些时间(超过4分钟)。
即使有的元素不可见,它也会等待一段时间,所以我的脚本需要时间来执行。
我试过用
isDisplayed()
, isEnabled()
,isPresent
捉弄
请给我一个解决方案,如果页面中没有元素可见,我的脚本将继续下去。
更新了评论。
我已经尝试了以下所有的解决办法
1.在第一个选项中,Select select = new Select( drop_down_options); 显示出错误,说 "将参数drop_down_options投给WebElement"。
2.其中,在第二个选项中,getText()返回输入字段附近的占位符值和其他帮助文本信息 GetAttribute()返回null。
试着用下面的代码,但同样的结果,如果没有选项,执行起来会很费时间。
for (int d = 0; d < dropdowns.size(); d++) {
Thread.sleep(1000);
System.out.println("----------------" +dropdowns.get(d).getAttribute("value"));
System.out.println("----------------" +dropdowns.get(d).getText());
dropdowns.get(d).click();
Thread.sleep(1000);
WebDriverWait wait=new WebDriverWait(driver,10);
wait.until(ExpectedConditions.visibilityOfAllElements(drop_down_options));
try{
if (drop_down_options.size()==0) {
drop_down_options.get(0).click();
}
}catch(Exception e)
{
e.printStackTrace();
}
如果你的DOM是使用选项标签的下拉,那么可以尝试以下。
List<WebElement> drop_down_options = driver.findElements(By.className("mat-option"));// Assuming class name is from parent tag.
Select select = new Select(drop_down_options);
List<WebElement> allOptions = select.getOptions();
选项2
尝试使用gettext()或getattribute()获取下拉菜单的默认值。
你可以检查属性值是否=="DISABLE",不要点击。
或者你可以得到默认值,并检查它是否为空,然后只执行点击操作。
方案三