我有一个使用WebDriver的Selenium脚本(Python)
WebDriverWait(driver, long_wait).until(
EC.presence_of_element_located(find_element(driver, selector))
)
然而,脚本的页面是"等待"要显示的元素是使用Javascript刷新自己。页面每秒刷新一次,成功"几次刷新后会出现元素。刷新上面出现的命令会出现,但是我希望它能够无限期地(或者长时间)等待客户端/浏览器刷新。
WebDriver可以实现吗?
编辑:这是方法的主体。请忽略我的调试黑客:)
def waitForElementPresent(self, driver, selector):
try:
WebDriverWait(driver, 10, ignored_exceptions=[
NoSuchElementException, StaleElementReferenceException
]).until(EC.presence_of_element_located(find_element(driver, selector)))
except NoSuchElementException:
print("No such element, waititng again")
self.waitForElementPresent(driver, selector)
print("Returning normally")
return
终端是在客户端的第一次javascript刷新时达到的。
答案 0 :(得分:2)
只需等待元素以通常的方式存在,此处不需要递归方法和特殊异常处理:
def waitForElementPresent(driver, selector):
return WebDriverWait(driver, 60).until(EC.presence_of_element_located(selector))
element = waitForElementPresent(driver, (By.ID, "myid"))