Javascript 刷新时 Selenium WebDriver waitForElementPresent
Selenium WebDriver waitForElementPresent when Javascript refreshes
我有一个使用 WebDriver 的 Selenium 脚本 (Python)
WebDriverWait(driver, long_wait).until(
EC.presence_of_element_located(find_element(driver, selector))
)
然而,脚本正在“等待”元素出现的页面正在使用 Javascript 刷新自身。该页面每秒刷新一次,刷新几次后将出现一个“成功”元素。它出现在刷新上面的命令退出但是我希望它无限期地等待(或长时间)甚至在 client/browser 刷新。
这可以用 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 刷新时到达。
只需等待元素以通常的方式出现,这里不需要递归方法和特殊的异常处理:
def waitForElementPresent(driver, selector):
return WebDriverWait(driver, 60).until(EC.presence_of_element_located(selector))
element = waitForElementPresent(driver, (By.ID, "myid"))
我有一个使用 WebDriver 的 Selenium 脚本 (Python)
WebDriverWait(driver, long_wait).until(
EC.presence_of_element_located(find_element(driver, selector))
)
然而,脚本正在“等待”元素出现的页面正在使用 Javascript 刷新自身。该页面每秒刷新一次,刷新几次后将出现一个“成功”元素。它出现在刷新上面的命令退出但是我希望它无限期地等待(或长时间)甚至在 client/browser 刷新。
这可以用 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 刷新时到达。
只需等待元素以通常的方式出现,这里不需要递归方法和特殊的异常处理:
def waitForElementPresent(driver, selector):
return WebDriverWait(driver, 60).until(EC.presence_of_element_located(selector))
element = waitForElementPresent(driver, (By.ID, "myid"))