隐式等待和显式等待之间的内部工作区别是什么

2024-03-14

显式等待示例

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

隐式等待示例

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"));

假设 myDynamicElement 在第 6 秒可见, 因此,在这两种情况下,驱动程序都会等到第 6 秒,控制权将移至连续的书面语句,我想了解在这种情况下隐式等待和显式等待有何不同?他们内部如何运作?


隐式等待:

隐式等待 https://stackoverflow.com/questions/45672693/using-implicit-wait-in-selenium/45674706#45674706是配置的方式网络驱动程序 https://stackoverflow.com/questions/48079120/what-is-the-difference-between-chromedriver-and-webdriver-in-selenium/48080871#48080871实例来轮询HTML DOM https://www.w3schools.com/js/js_htmldom.asp当它尝试查找元素或查找元素组/集合(如果它们不能立即可用)时,会持续一段配置的时间。按照目前的W3C规范默认时间配置为0。我们可以配置时间隐式等待 https://stackoverflow.com/questions/48989984/selenium-implicitly-wait-doesnt-work/48991017#48991017我们的脚本/程序中的任何位置,并且可以根据我们的需要重新配置它。一旦我们设置隐式等待 https://stackoverflow.com/questions/46767355/implicit-wait-command-not-working-selenium-webdriver-c-sharp/46769081#46769081它将在该人的生命周期内有效网络驱动程序实例。

参考

一些参考资料:

  • 详细讨论 https://stackoverflow.com/questions/45672693/using-implicit-wait-in-selenium/45674706#45674706
  • 详细文档 http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits.

显式等待:

显式等待 https://stackoverflow.com/questions/52706693/how-to-combine-implicit-and-explicit-timeouts-in-selenium/52707885#52707885是您定义、配置和实现的代码块网络驱动程序实例等待满足特定条件,然后再继续下一行代码。 WebDriverWait 以及某些方法/子句预期条件 https://seleniumhq.github.io/selenium/docs/api/java/org/openqa/selenium/support/ui/ExpectedConditions.html是一种实现方法显式等待 https://stackoverflow.com/questions/45712431/replace-implicit-wait-with-explicit-wait-selenium-webdriver-java/45715759#45715759.

参考

一些参考资料:

  • 详细讨论 https://stackoverflow.com/questions/45712431/replace-implicit-wait-with-explicit-wait-selenium-webdriver-java/45715759#45715759
  • 详细文档 http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#explicit-waits.

变得细化:

根据您的查询...假设 myDynamicElement 在第 6 秒可见,因此在这两种情况下,驱动程序都会等到第 6 秒,控制权将移至连续的书面语句...

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

隐式等待会轮询DOM Tree https://javascript.info/dom-nodes对于整个10 secs无论是否我的动态元素(或与您的定位器匹配的多个元素)在第 4/6/8 秒可见。所以,在这种情况下,你的脚本得到延迟于4 secs.

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement myDynamicElement= wait.until(ExpectedConditions.elementToBeClickable(By.id("someid")));

显式等待会等待最长 10 秒对于元素someid变为可点击(显示并启用)。这网页元素一旦返回预期条件已满足。如果预期条件在配置的时间线的整个持续时间内未满足,您会看到正确的例外.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

隐式等待和显式等待之间的内部工作区别是什么 的相关文章

随机推荐