根据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
。答案 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