EC.element_to_be_clickable 和 EC.presence_of_element_ located 之间单击()元素的区别

Jas*_*tha 4 python selenium selenium-webdriver expected-condition

我在间歇性单击某个元素时遇到 TimeoutExceptions。我尝试过显式等待和 time.sleep()。它工作了一段时间,我一次又一次地遇到例外。

我想了解这是否是由预期条件引起的。

WebDriverWait(self.driver, 40).until(EC.element_to_be_clickable((By.XPATH, <locator>  ))).click()
Run Code Online (Sandbox Code Playgroud)

如果我使用以下条件是否有助于避免超时异常?

element = WebDriverWait(self.driver, 40).until(EC.presence_of_element_located((By.XPATH, <locator>  )))
element.click()
Run Code Online (Sandbox Code Playgroud)

Inf*_*rn0 7

基于 selenium 的官方文档和代码实现。

presence_of_element_located(locator)定义:

期望检查页面的 DOM 上是否存在元素。这并不一定意味着该元素是可见的。locator - 用于查找元素,一旦找到就返回 WebElement

element_to_be_clickable(locator):

检查元素的期望是可见的并且已启用,以便您可以单击它。

预期条件在定义的超时时间内循环执行条件。它将轮询直到true返回条件。如果false返回,它将继续循环,直到达到最大超时时间。