ale*_*cxe 12 python java selenium wait selenium-webdriver
在java selenium-webdriver包中,有一个FluentWait类:
每个FluentWait实例定义等待条件的最大时间量,以及检查条件的频率.此外,用户可以将等待配置为在等待时忽略特定类型的异常,例如在搜索页面上的元素时的NoSuchElementExceptions.
换句话说,它不仅仅是隐式和显式等待,还可以让您更好地控制等待元素.它可以非常方便,绝对有用例.
在python selenium包中有什么类似的,或者我应该自己实现它?
(我查看了Waits的文档- 没有任何内容).
小智 20
我相信你可以用Python做到这一点,但它不像FluentWait类那样打包.其中一些内容未在您提供的文档中进行了详细介绍.
WebDriverWait类具有timeout,poll_frequency和ignored_exceptions的可选参数.所以你可以在那里供应.然后将它与预期条件结合起来等待元素出现,可点击等等......这是一个例子:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import *
driver = webdriver.Firefox()
# Load some webpage
wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException])
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//div")))
Run Code Online (Sandbox Code Playgroud)
显然你可以将wait/element组合成一个语句,但我想通过这种方式你可以看到它的实现位置.
iChar的答案涵盖了如何WebDriverWait在Python中使用FluentWaitJava 来做什么.问题的某些方面仍然没有得到解决:
换句话说,[
FluentWait]不仅仅是隐式和显式等待
从Selenium版本2.42.x开始,Selenium实现的只有两种等待:隐式和显式.FluentWait这两种等待不是额外的东西.这只是一个明确的等待.
在python selenium包中有什么类似的,或者我应该自己实现它?
我唯一能想到的就是Python的WebDriverWait实现中缺少FluentWait(并且WebDriverWait,通过扩展),这是:
[
FluentWait(并且,通过扩展,WebDriverWait)] 可以动态配置其超时和轮询间隔.
[引自此.]
WebDriverWaitPython中的类的设计方式使其配置值在创建时一劳永逸地设置.FluentWait允许在创建后更改其配置.因此,可以重用单个 FluentWait对象(或WebDriverWaitJava中的任何对象)来等待具有不同轮询频率的不同条件.在Python中,您必须创建一个新WebDriverWait对象以使用不同的轮询频率.
所以有一些 Python实现没有提供,但我不认为这足以保证实现.
| 归档时间: |
|
| 查看次数: |
4736 次 |
| 最近记录: |