如何使用Selenium自动刷新chromeDriver?

3

之前我一直使用Chrome的自动刷新插件。但是现在我的代码有多个ChromeDriver实例正在打开和关闭,我无法使用Auto Refresh。而且,在新电脑上安装Auto Refresh也很麻烦。

在Selenium中,有没有类似于Google Auto Refresh的方法来刷新驱动程序(例如每15秒模拟F5刷新,如果驱动程序不改变就保持静止)?

3个回答

10

Refresh是一个内置命令。

driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.refresh()

如果您没有Chrome驱动程序,可以在此处找到: https://code.google.com/p/chromedriver/downloads/list 将二进制文件放在与您编写的Python脚本相同的文件夹中。(或者将其添加到路径或其他位置,更多信息请参见:https://code.google.com/p/selenium/wiki/ChromeDriver
编辑:
如果您想每10秒刷新一次页面,请使用循环和延迟包装刷新行。例如:
import time
while(True):
    driver.refresh()
    time.sleep(refresh_time_in_seconds)

如果您只想在页面未发生变化的情况下刷新页面,请跟踪您所在的页面。driver.current_url是当前页面的URL。因此,将它们组合在一起:

import time
refresh_time_in_seconds = 15
driver = webdriver.Chrome()
driver.get("http://www.google.com")
url = driver.current_url
while(True):
    if url == driver.current_url:
        driver.refresh()
    url = driver.current_url
    time.sleep(refresh_time_in_seconds)

非常感谢 +1。但是如果网页没有更改其Url,即保持静止状态,我该如何使它每15秒自动刷新一次? - Buras

4

有两种方法可以实现这个目标。 1. 我们可以使用刷新方法。

driver.get("某个网站的url"); driver.navigate().refresh();

  1. 我们可以使用actions类模拟按下F5键。

    Actions act = new Actions(driver); act.SendKeys(Keys.F5).perform();


非常感谢+1。但是如果网页不改变其URL,即保持静止状态,我该如何使其每15秒自动刷新? - Buras
嗯,你希望做多少次这个?你只会处理一页吗? - Vinay

1

如果你编写的单元测试需要每次打开/刷新新的浏览器会话进行运行,你可以使用带有before注解的方法:

@Before
public void refreshPage() {
    driver.navigate().refresh();
}

如果所有测试分别成功(绿色),但全部失败,则原因可能是您需要等待页面上的某些资源可用,因此您还需要处理它,设置超时时间如下:
public WebElement getSaveButton() {
    return findDynamicElementByXPath(By.xpath("//*[@id=\"form:btnSave\"]"), 320);
}

320是很长的时间,但你必须确保给足够的时间来测试所有需要的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接