为了账号安全,请及时绑定邮箱和手机立即绑定

Selenium java中isDisplayed()的替代方法

Selenium java中isDisplayed()的替代方法

智慧大石 2022-01-19 09:51:54
public void privateCohortCreation() {    if(webElements.newCohortElm.isDisplayed()) {        SeleniumUtils.click(getDriver(),webElements.createCohortSelectionFromMenu);        webElements.cohortname.sendKeys("private_cohort_test");        SeleniumUtils.click(getDriver(),webElements.createCohortButton);    }    else {        doApply();    }}我希望如果显示元素然后执行任务 else 调用doApply()方法。但这是一个例外"no such element: Unable to locate element: {"method":"xpath","selector":"/html/body/app-root/div/app-container/app-indv301/app-global-filters/div/ul/li[3]/app-cohort/div/div/app-status/div"} (Session info: chrome=70.0.3538.77)"
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

您可以使用findElements()来检查该元素是否在网页上。


findElements()- 如果没有具有给定定位器的元素,则返回空列表-如果元素不在页面上,则

findElement()抛出NoSuchElementException


试试下面的代码:


List<WebElement> elements = driver.findElements(By.locator);

if(!elements.isEmpty()) {

    if(elements.get(0).isDisplayed()) {

       elements.get(0).click();

    }

    else {

       // element not visible 

    }


}else{

  // here mention code if element not present   

}

建议:使用相对 xpath 而不是绝对 xpath。或尝试使用 CSS 选择器。


查看完整回答
反对 回复 2022-01-19
?
月关宝盒

TA贡献1772条经验 获得超5个赞

尝试使用 try catch 而不是 if else。


 try {

            if (webElements.newCohortElm.isDisplayed()) {

                doApply();

            }

        }

        catch (Exception e){

            SeleniumUtils.click(getDriver(), webElements.createCohortSelectionFromMenu);

            webElements.cohortname.sendKeys("private_cohort_test");

            SeleniumUtils.click(getDriver(), webElements.createCohortButton);

        }


查看完整回答
反对 回复 2022-01-19
  • 2 回答
  • 0 关注
  • 224 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信