当Javascript刷新时Selenium WebDriver waitForElementPresent [英] Selenium WebDriver waitForElementPresent when Javascript refreshes

查看:28
本文介绍了当Javascript刷新时Selenium WebDriver waitForElementPresent的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用 WebDriver 的 Selenium 脚本(Python)

I have a Selenium script (Python) using WebDriver that does

WebDriverWait(driver, long_wait).until(
    EC.presence_of_element_located(find_element(driver, selector))
)

然而,脚本正在等待"元素出现的页面正在使用 Javascript 来刷新自身.页面每秒刷新一次,刷新几次后会出现成功"元素.刷新时出现上述命令退出,但我希望它即使在客户端/浏览器刷新时也能无限期(或长时间)等待.

However the page the script is "waiting" for the element to appear on is using Javascript to refresh itself. The page refreshes itself every second and a "success" element will appear after a few refreshes. It appears upon refresh the above command exits however I want it to wait indefinitely (or for a long period) even across client/browser refreshing.

这可以通过 WebDriver 实现吗?

Is this possible with WebDriver?

这是方法的主体.请忽略我的调试技巧:)

Here's the body of the method. Ignore my debugging hacks please :)

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 时到达 finally.

The finally is reached on the first javascript refresh on the client.

推荐答案

只需等待元素以通常的方式出现,这里不需要递归方法和特殊的异常处理:

Just wait for the element to be present in a usual way, the recursive approach and special exception handling are not needed here:

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

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

这篇关于当Javascript刷新时Selenium WebDriver waitForElementPresent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆