等待元素并返回

时间:2018-11-28 08:01:06

标签: python selenium

根据Waits — Selenium Python Bindings 2 documentation,我可以等呈现并可见的元素(例如,如果是通过AJAX调用加载的),如下所示:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

d = selenium.webdriver.<whichever>()
w = WebDriverWait(d,10)

w.until(EC.visibility_of_element_located((By.XPATH,"<xpath>")))

但是,要在此之后使用此元素,我必须再次定位它(复制搜索参数),这非常不方便。 由于这是一项常见任务,因此我很确定selenium必须具有一些快捷方式,该快捷方式将等待元素并在成功后将其返回。

  • 我已经仔细阅读了前面的文章,WebDriverWait reference毫无用处。
  • 有一些定位器-例如visibility_of()-接受WebElement。但是由于该元素最初并不存在,所以我无法为此预先创建一个WebElement

1 个答案:

答案 0 :(得分:2)

until函数返回从WebElemwnt返回的Expected_condition

  

该函数的返回值(如果该函数返回了某些内容)   不同于超时之前的null或false。

visibility_of_element_located在内部使用driver.find_element。如果在声明的时间内搜索成功,则将返回找到的WebElement

element = w.until(EC.visibility_of_element_located((By.XPATH,"<xpath>")))
# do something with the element