当页面中不存在网页元素时,如何继续执行脚本?

问题描述 投票:0回答:1

我正试图从一个下拉选项中选择一个选项。如果没有下拉选项可见,那么脚本执行应该继续。

请在下面找到我的代码

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分钟)。

即使有的元素不可见,它也会等待一段时间,所以我的脚本需要时间来执行。

我试过用

  1. isDisplayed(), isEnabled() ,isPresent

  2. 捉弄

请给我一个解决方案,如果页面中没有元素可见,我的脚本将继续下去。

更新了评论。

我已经尝试了以下所有的解决办法

1.在第一个选项中,Select select = new Select( drop_down_options); 显示出错误,说 "将参数drop_down_options投给WebElement"。

2.其中,在第二个选项中,getText()返回输入字段附近的占位符值和其他帮助文本信息 GetAttribute()返回null。

  1. 试着用下面的代码,但同样的结果,如果没有选项,执行起来会很费时间。

        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();
    
                }
    
java selenium selenium-webdriver automated-tests testng
1个回答
0
投票

如果你的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",不要点击。

  • 或者你可以得到默认值,并检查它是否为空,然后只执行点击操作。

方案三

  • try和catch {}它应该工作,如果没有工作,把你的工作和细节。请注意,Catch不应该有返回语句在你的异常后继续。
© www.soinside.com 2019 - 2024. All rights reserved.