isDisplayed()方法的执行时间过长

时间:2019-07-19 16:40:18

标签: java selenium selenium-webdriver wait webdriverwait

我正在研究Java Selenium项目,并使用isDisplayed()方法来验证页面上显示或未显示某些元素,并且每种方法的执行大约需要45秒,是否有任何建议说明为什么可能要花这么长时间,是否可以在框架级别指定一些等待时间? 注意:框架不是我创建的,我只是在更新它。\

@FindBy(xpath = "//input[@id='productLIGrpTermDeal_chkPartySlf']//following-sibling::div")    
List<WebElement> GroupTermDealerLifeInsuranceSelf1;


public boolean verify_Icon_Is_Not_Displayed_() throws Exception {

    try {
        log.debug("Validate Icon is not Displayed");

        Assert.assertEquals(0, GroupTermDealerLifeInsuranceSelf1.size());

        System.out.println("Icon is not Displayed");
        log.info("Icon is validated successfully || Pass");
        return true;
    } catch (Exception e) {
        System.err.println("Icon is Displayed");
        log.error("Not able to Validate Icon is Displayed || Fail" + e.getMessage());
        return false;
    }
}

2 个答案:

答案 0 :(得分:0)

除了需要使用driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

的特定元素等待之外,还需要配置WebDriverWait wait = new WebDriverWait(driver, 10); WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(>someid>)));进行隐式等待(每次等待查找元素)

答案 1 :(得分:0)

您可以修改XPath查询以将List的大小限制为1(或测试中使用的最大值)。可以通过在定位器的末尾添加position() function来实现,例如:

@FindBy(xpath = "//input[@id='productLIGrpTermDeal_chkPartySlf']//following-sibling::div/*[position()<=1]")

应用此更改后,找到WebElements的时间将与DOM中的匹配项成比例地减少。

更多信息:XPath Operators & Functions