栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

混合隐式和显式等待

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

混合隐式和显式等待

既然我知道有时候我肯定会需要WebDriverWait,这是否意味着我需要在我的unittest
setUp方法中摆脱隐式等待,而每次使用任何find_element_by_方法时都要使用WebDriverWait吗?

是。正如您在链接到的问题中所看到的那样,如果您同时使用两种类型的等待,则会遇到不良行为。这不只是理论上的。我亲身经历了这种行为,尝试对其进行调试,找到您链接的问题,然后从我的测试套件中删除了所有隐式等待。

我开发了一个库来帮助设置显式等待(并执行其他操作)。假设您已经有一个

driver
具有硒Web驱动程序的对象:

from selenium.webdriver.common.by import Byimport selenic.utilutil = 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
找到返回的内容后才出现,则只会得到一个元素。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号