首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >implicitWait到底是如何在selenium中动态处理的?

implicitWait到底是如何在selenium中动态处理的?
EN

Stack Overflow用户
提问于 2020-02-13 17:56:37
回答 2查看 249关注 0票数 0

我对硒的隐含等待有疑问?正如我们知道的,隐式等待是动态等待,这意味着如果我们提到等待10秒才能加载任何元素,但如果元素在4秒内加载,那么driver就会退出等待。

所以,问题是,驱动程序是如何知道该元素在4秒内加载的,并让我们从等待中出来的?我们在隐式等待中没有提到任何条件,比如寻找任何元素的可见性,然后出来,那么隐式等待是如何调用才能走出等待的呢?

EN

回答 2

Stack Overflow用户

发布于 2020-02-13 19:22:08

隐式等待发生在驱动程序级别,显式等待发生在编程级别。大多数人都没有意识到这一点。

隐式等待只检查它是否存在,因此您不必像显式等待那样指定任何条件。但我已经提出了一项议案,希望在Chrome (参见这里的https://bugs.chromium.org/p/chromedriver/issues/detail?id=2016)和火狐浏览器中也包含隐含的等待可见性,Chrome已经纳入了这一变化,但火狐仍然没有。我要求他们包括它,因为火狐传统驱动程序等待元素的存在和可见性,所以我希望在这里也有同样的变化。

票数 0
EN

Stack Overflow用户

发布于 2020-02-15 00:03:10

不能使用Selenium动态处理Implicit Wait。在他的史诗comment Jim Evans Maintainer - DotNet client / IEDriverServer中提到,implicitlyWaits通常(总是可能不会)在WebDriver系统的remote端实现。这意味着ImplicitWait是在中对WebDriver变体进行烘焙的,即GeckoDriver、IEDriverServer、ChromeDriver、安装到匿名Firefox (Selenium RC)中的Java扩展以及WebDriver远程WebDriver服务器(selenium-WebDriver-Standalone.jar)。

一旦您设置了implicitly_wait,WebDriver实例将能够携带此配置直到其生命周期。要设置等待时间的时间跨度,您可以:

  • Python:

driver.implicitly_wait(5)

  • Java:

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

  • DotNet:

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

如果您在任何时候想要删除ImplicitWait,您可以按如下方式实现:

  • Python:

driver.implicitly_wait(0)

  • Java:

TimeUnit.SECONDS);

  • DotNet:(0,driver.manage().timeouts().implicitlyWait

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(0);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60205018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档