为什么dosnt我的webdriver方法等到'Max timeout'才能看到一个元素?

时间:2017-06-07 10:25:02

标签: java selenium selenium-webdriver webdriver

为什么dosnt我的webdriver方法要等到'Max timeout'才能看到一个元素?

我的方法:

    public boolean WaitUntilWebElementIsVisible(WebElement element) {
    try {
        WebDriverWait tempWait = new WebDriverWait(driver, 30);
        tempWait.pollingEvery(100, TimeUnit.MILLISECONDS);
        tempWait.until(ExpectedConditions.visibilityOf(element));
        System.out.println("WebElement is visible using locator: " + element.toString());
        return true;
    } catch (Exception e) {
        System.out.println("WebElement is NOT visible, using locator: " + element.toString() + " ,Exception: " + e.getMessage());
        Assert.fail("Method failed: WaitUntilWebElementIsVisible");
        //Assert.fail("WebElement is NOT visible, using locator: " + element.toString());
        return false;
    }
}

TestNG致电:

    @Test(priority = 27)
public void confirm_BillingAddress_Header_IsVisible_BillingAndPaymentDetails_Section() throws Exception {
    //Verify whether the panel title: 'BILLING ADDRESS:' is visible
    Thread.sleep(1000);
    basePage.WaitUntilWebElementIsVisible(checkoutPage.subheader_BillingAddress);
    Assert.assertEquals(checkoutPage.subheader_BillingAddress.getText(), "BILLING ADDRESS:");
}

问题示例(在测试期间,标头很容易在30秒之前出现): enter image description here

2 个答案:

答案 0 :(得分:0)

你使用隐含的服务员吗?在没有隐含服务员的情况下使用明确的服务员的好习惯。

答案 1 :(得分:0)

实际上,您的代码将等待checkoutPage.subheader_BillingAddress可见 最多30秒

这并不意味着它将等待30秒然后完成执行 但这意味着

如果元素在30秒之前出现,它将完成执行

但是如果元素花了超过30秒才出现,你的代码会抛出异常