以前我一直在使用chrome Auto Refresh插件。但是,现在我的代码有多个ChromeDriver实例打开和关闭,我无法使用自动刷新。此外,在新计算机上安装Auto Refresh非常麻烦。
是否有任何方法可以刷新驱动程序(如果驱动程序没有变化则模拟F5说每15秒仍然不动)与Selenium类似于谷歌自动刷新?
答案 0 :(得分:7)
refresh是一个内置命令。
driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.refresh()
如果你没有镀铬驱动程序,可以在这里找到: 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
是当前页面的网址。所以把它们放在一起就是:
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 :(得分:3)
有两种方法可以做到这一点。 1.我们可以使用刷新方法
driver.get(“some website url”); driver.navigate()刷新();
我们可以使用动作类并模仿F5按
动作行为=新行动(司机); act.SendKeys(Keys.F5).perform();
答案 2 :(得分:1)
如果您编写必须运行的单元测试,就像每次必须打开/刷新新的浏览器会话一样,您可以使用注释前的方法:
@Before
public void refreshPage() {
driver.navigate().refresh();
}
如果所有测试都单独成功(绿色)但一起失败,原因可能是您需要等待页面上的某些资源可用,所以您还需要处理它,设置这样的超时:
public WebElement getSaveButton() {
return findDynamicElementByXPath(By.xpath("//*[@id=\"form:btnSave\"]"), 320);
}
320很长一段时间,但你必须确保你有足够的时间来完成测试所需的一切。