一尘不染

Java在Python中的FluentWait

selenium

在java selenium-
webdriver软件包中,有一个FluentWait类:

每个FluentWait实例都定义了等待条件的最长时间,以及检查条件的频率。此外,用户可以配置等待以在等待时忽略特定类型的异常,例如在页面上搜索元素时的NoSuchElementExceptions。

换句话说,它不仅仅是隐式和显式wait,它还使您可以更好地控制元素的等待。它可能非常方便,并且肯定有用例。

python selenium软件包中是否有类似的东西,还是我应该自己实现?

(我已经浏览了Waits的文档-那里什么也没有)。


阅读 364

收藏
2020-06-26

共1个答案

一尘不染

我相信您可以使用Python做到这一点,但是它并不像FluentWait类那样简单地打包。您提供的文档中没有涉及到其中的一些内容。

WebDriverWait类具有用于超时,poll_frequency和ignore_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")))

显然,您可以将wait / element合并为一个语句,但是我发现以这种方式可以看到在哪里实现。

2020-06-26