为什么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:");
}
答案 0 :(得分:0)
你使用隐含的服务员吗?在没有隐含服务员的情况下使用明确的服务员的好习惯。
答案 1 :(得分:0)
实际上,您的代码将等待checkoutPage.subheader_BillingAddress可见 最多30秒
这并不意味着它将等待30秒然后完成执行 但这意味着
如果元素在30秒之前出现,它将完成执行
但是如果元素花了超过30秒才出现,你的代码会抛出异常