gpt4 book ai didi

java - Selenium WebDriver 中的无限等待

转载 作者:太空宇宙 更新时间:2023-11-04 06:40:27 25 4
gpt4 key购买 nike

我实际上有 3 个问题:

  1. Selenium WebDriver 如何实现这一点driver.manage().timeouts().pageLoadTimeout(-1, TimeUnit.SECONDS)

因为我们不能为无限 sleep 的线程赋予负值。

  • 我编写了这样的无限 sleep 代码
  •     WebDriver driver=new FirefoxDriver(fb, fp);
    driver.get("http://www.google.com");
    String str="'Feeling Lucky'";
    driver.manage().timeouts().pageLoadTimeout(-1, TimeUnit.SECONDS)
    //driver.findElement(By.xpath(".//span[contains(text(),"+str+")]")).click();
    while(true)
    {
    try
    {
    driver.findElement(By.xpath(".//span[contains(text(),"+str+")]")).click();
    break;
    }
    catch(Exception e)
    {
    Thread.sleep(500);
    }
    }
    driver.quit();

    有没有更好的方法来实现无限等待?

  • 我使用 driver.manage().timeouts().pageLoadTimeout(-1, TimeUnit.SECONDS) 对 Webdriver 实现进行无限等待测试。我所做的只是在页面尝试加载时断开网络连接,但我得到了一个意想不到的结果,在一段时间后驱动程序相当,但它不应该完全浏览器,它应该无限等待。
  • 我们在 selenium webdriver 文档中看到这一点

        /**
    * Sets the amount of time to wait for a page load to complete before throwing an error.
    * If the timeout is negative, page loads can be indefinite.
    *
    * @param time The timeout value.
    * @param unit The unit of time.
    * @return A Timeouts interface.
    */
    Timeouts pageLoadTimeout(long time, TimeUnit unit);

    最佳答案

    我建议添加您自己的 findElement() 方法,而不是试图欺骗 Selenium。

    免责声明:我衷心建议您不要这样做。等待是有原因的。如果您有无限的等待,那么如果出现问题时您不手动干预,您的测试将永远运行。相反,我建议将其设置为非常高的数字,但不是无限的。

    你可以这样做:

    WebElement findElement(By by) {
    int attempts = 0;
    while (attempts > 300)
    try {
    return driver.findElement(by);
    } catch (Exception e) {
    Thread.sleep(500);
    attempts++;
    }
    }
    }

    那里没有必要有无限循环。

    再次强调,我不建议您执行上述操作!我只是为您提供该解决方案,因为这是您明确要求的。

    您可以做的另一件事是,如果您确实想长时间等待:

    driver.manage().timeouts().pageLoadTimeout(300, TimeUnit.SECONDS)

    那是 300 秒...即使对我来说,这也非常糟糕,不应该放入。网页不应该花费 300 秒来加载。如果确实如此,那么您还需要修复其他问题 ;)

    关于java - Selenium WebDriver 中的无限等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24742171/

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