gpt4 book ai didi

java - 无法让 selenium webdriver 等待指定的时间

转载 作者:行者123 更新时间:2023-12-02 03:14:33 25 4
gpt4 key购买 nike

我正在使用以下代码,以便 selenium 驱动程序在进行任何进一步处理之前等待 10 秒。但页面加载速度太快,从 10 秒增加或减少到 20 秒似乎没有任何区别。我什至将 TimeUnit.SECONDS 更改为 TimeUnit.MINUTES 但没有区别。

我错过了什么?

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

CheckoutTest.java

@Test
public void testCheckoutScenario() throws InterruptedException {
driver.get(WEBSTORE_BASE_URL); //hit the Home Page
assertEquals("Home Page", driver.getTitle().trim());

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

//navigate to category page
driver.findElement(By.linkText("Gear")).click();
assertEquals("Gear", driver.getTitle().trim());
//navigate to subcategory page
driver.findElement(By.linkText("Watches")).click();
assertEquals("Watches - Gear", driver.getTitle().trim());

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

//some more code
}

我使用 Selenium 3.0、Google Chrome Webdriver 和 Java 8 来运行此测试。

最佳答案

您对 Selenium 隐式等待功能的理解是不正确的。
您声明您正在使用隐式等待“以便 selenium 驱动程序在进行任何进一步处理之前等待 10 秒”。

隐式等待不会延迟处理,而是设置 selenium WebDriver 对于任何实现等待的操作将等待的时间作为最大值。“click()”方法没有实现等待,因此当您执行代码时,它将执行以下行:
assertEquals("Gear", driver.getTitle().trim());
但失败了,因为在页面移动之前执行断言时,它仍然看到页面“Home Page”。

考虑按以下方式使用显式等待重写代码:-
WebElement myDynamicElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

其中 myDynamicElement 是您要导航到(等待)的页面上的定位器。

为了使代码更具可读性,您应该考虑创建一个类来使用 try-catch block 正确实现计时器。

要了解更多信息,您应该考虑注册免费的 Selenium 训练营 The Selenium Handbook 。第 4 天涵盖等待。

关于java - 无法让 selenium webdriver 等待指定的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com