Javascript刷新时Selenium WebDriver waitForElementPresent

时间:2015-05-19 13:48:59

标签: python selenium webdriver qa

我有一个使用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刷新时达到的。

1 个答案:

答案 0 :(得分:2)

只需等待元素以通常的方式存在,此处不需要递归方法和特殊异常处理:

def waitForElementPresent(driver, selector):
    return WebDriverWait(driver, 60).until(EC.presence_of_element_located(selector))

element = waitForElementPresent(driver, (By.ID, "myid"))