该文件说:
隐式等待是告诉WebDriver在尝试查找一个或多个元素(如果它们不立即可用)时轮询DOM一定时间。
子问题:
对于find_elements_by_
(复数),implicit_wait
在继续执行脚本之前需要等待多少个元素?还是implicit_wait
仅适用于find_element_by_
(单数)?如果是这样,文档中“或元素”是什么意思?
从一个SO答案中,我读到最好不要在同一脚本中同时使用隐式和显式等待,这是我注意到的,因为我希望测试尽可能强大。
既然我知道有些时候我肯定需要WebDriverWait
,这是否意味着我需要摆脱implicit_wait
我的unittest
setUp
方法,而WebDriverWait
每次使用任何find_element_by_
方法时都要雇用它?
(我宁愿不必这样做;尽管我想我可以将每个find_element_by_
方法放在自己的自定义函数中-
每个方法都包装在自己的函数中WebDriverWait
-感觉我不必这样做)。
所以我的主要问题是:
我是否可以保留我implicit_wait
的测试setUp
方法,然后仅WebDriverWait
在涉及find_elements_by_
我需要的其他地方使用它?
既然我知道有时候我肯定会需要WebDriverWait,这是否意味着我需要在unittest
setUp方法中摆脱implicit_wait,而每次使用任何find_element_by_方法时都要使用WebDriverWait?
是。正如您在链接到的问题中所看到的那样,如果您同时使用两种类型的等待,则会遇到不良行为。这不只是理论上的。我亲身经历了这种行为,尝试对其进行调试,找到您链接的问题,然后从我的测试套件中删除了所有隐式等待。
我开发了一个库来帮助设置显式等待(并执行其他操作)。假设您已经有一个driver
具有硒Web驱动程序的对象:
from selenium.webdriver.common.by import By
import selenic.util
util = selenic.util.Util(driver)
# This goes through util and uses the explicit wait set by util.
foo = util.find_element((By.CSS_SELECTOR, "..."))
# For special cases that take longer to give results.
with util.local_timeout(10):
# The timeout is set to 10 for calls in this with block.
bar = util.find_element(...)
# The timeout is restored to what it was just before the with.
有时候,您根本不需要使用等待,因为 从逻辑上讲, 如果元素A存在,那么元素B也存在,因此您不必 等待
。例如。如果您希望已经从Selenium获得的元素的父元素,可以执行parent = foo.find_element_by_xpath("..")
。
至于的行为find_elements
,它会在确定有结果要返回时立即返回。这可能意味着,如果以后的元素在find_elements
找到返回值后才出现,则只会得到一个元素。
问题内容: 我在使用Hibernate生成无效SQL时遇到问题。具体来说,混合和匹配隐式和显式联接。这似乎是一个开放的错误。 但是,我不确定 为什么 这是无效的SQL。我想出了一个生成相同语法异常的小型玩具示例。 架构图 数据 工作SQL 这两个查询均有效。我意识到有笛卡尔积;那是故意的。 明确加入: 隐式加入: 无效的SQL 此查询不适用于MSSQL 2000/2008或MySQL: 在MS20
为了编写所需的最少代码量,我尝试让ModelMapper生成其隐式映射,并且只为那些无法自动映射的属性编写显式属性映射。 如果我让ModelMapper使用以下命令生成隐式映射: 它抱怨具有多个可能的映射。然后,我尝试使用以下方法修复该问题: 然而,我发现ModelMapper仍在抱怨,因为实际上在上抛出了一个异常,所以它没有机会访问我的自定义映射代码。 如果我反转这两个语句,我会得到一个错误:
问题内容: 我正在阅读SeleniumHQ文档,并遇到以下声明。 “警告:不要混合使用隐式等待和显式等待。这样做可能会导致不可预知的等待时间。例如,将隐式等待设置为10s,将显式等待设置为15秒,则可能导致20秒后发生超时。” 由于某些原因,我无法理解这一点。对于我来说,总超时时间是20秒。谁能解释我是否缺少什么? 编辑 我的问题不是关于混合这些等待的实现/后果。 这完全与文档中的语句和超时计算有
在过去,我写过一些java程序,使用两个线程。第一个线程(生产者)从API(C库)读取数据,创建一个java对象,将该对象发送到另一个线程。C API正在传递一个事件流(无限)。线程使用LinkedBlockingQueue作为管道交换对象(put、poll)。第二个线程(使用者)正在处理对象。(我还发现,线程中的代码更易读。第一个线程处理C API的内容并生成适当的java对象,第二个线程不受C
驱动程序级别的隐式和显式等待之间有什么区别。哪一个是驱动级等待。如果我们在代码中提供隐式和显式等待。哪一个优先。
我如何用一个显式的替换这个隐式的等待呢? driver=新ChromeDriver(功能); driver.manage().DeleteAllCookies();
问题内容: 我的两种情况- 1)首先 这使驱动程序有45秒的时间来搜索文本(这是预期的) 2)第二 现在这使驱动程序有 30秒的时间 来搜索文本(不需要) 有没有一种方法可以让selenium仅等待等待时间,而不等待两者中的较大者? 注意-不声明隐式等待时间不是一种选择,因为每次驱动程序无法找到东西时,我都无法让selenium挂起。 使用Selenium版本30,Windows,ff 问题答案:
本文向大家介绍Android隐式和显式意图,包括了Android隐式和显式意图的使用技巧和注意事项,需要的朋友参考一下 示例 显式意图用于在同一应用程序包内启动活动或服务。在这种情况下,将明确提及所需类的名称: 但是,对于用户设备上安装的可以处理该意图的任何应用程序,系统会在系统上发送隐式意图。这用于在不同应用程序之间共享信息。 可以在Android Developer文档中找到有关差异的更多详细