gpt4 book ai didi

selenium - 如果Implicit和Explicit等待,两者都用在Framework中怎么办

转载 作者:行者123 更新时间:2023-12-02 19:32:42 24 4
gpt4 key购买 nike

我了解等待和使用它。但我无法弄清楚的一件事是:如果我将隐式等待 5 秒放在顶部,然后使用显式等待元素。那么 Selenium 将如何表现。尝试过但在网上未能得到满意的答案。

最佳答案

首先了解显式等待和隐式等待的概念

隐式等待:隐式等待是告诉 WebDriver 在尝试查找一个或多个元素(如果它们不能立即可用)时轮询 DOM 一段时间。默认设置为 0。设置后,将在 WebDriver 对象实例的生命周期内设置隐式等待。例如:

WebDriver driver = new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("http://somedomain/url_that_delays_loading");
WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

显式等待:

  1. 显式等待是您定义的代码,用于等待特定条件发生,然后再继续处理代码。
  2. 在某些情况下,显式等待在功能上等同于隐式等待,这意味着a) 如果等待时间没有预先定义,如下所示(请注意,它们根据属于显式或隐式的方法类别进行区分)

    WebDriverWait wait = new WebDriverWait(driver, 10);

    WebElement 元素 = wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

    b) 网络驱动程序有时间等待 10 秒但在第 5 秒找到元素后网络驱动程序将继续的情况。

您的问题的答案:1) 假设您定义了 10 秒,则驱动程序最多等待 10 秒,但至少可以等待 0.001 秒,这意味着在隐式等待的情况下,我们必须给出等待的最大限制,而最小限制取决于查找元素或获取条件完成。

2) 在显式等待中,除了某些情况外,Webdriver 必须等待最大限制。

<小时/>

因此,作为答案,您的网络驱动程序首先将遵循隐式等待,然后遵循显式等待,因为由于单线程使用,浏览器行为将像其他编程语言一样是连续的。

<小时/>

引用:

Selenium Explicit and Implicit wait

关于selenium - 如果Implicit和Explicit等待,两者都用在Framework中怎么办,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25726897/

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