之前我一直使用Chrome的自动刷新插件。但是现在我的代码有多个ChromeDriver实例正在打开和关闭,我无法使用Auto Refresh。而且,在新电脑上安装Auto Refresh也很麻烦。
在Selenium中,有没有类似于Google Auto Refresh的方法来刷新驱动程序(例如每15秒模拟F5刷新,如果驱动程序不改变就保持静止)?
Refresh是一个内置命令。
driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.refresh()
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. 我们可以使用刷新方法。
driver.get("某个网站的url"); driver.navigate().refresh();
我们可以使用actions类模拟按下F5键。
Actions act = new Actions(driver); act.SendKeys(Keys.F5).perform();
如果你编写的单元测试需要每次打开/刷新新的浏览器会话进行运行,你可以使用带有before注解的方法:
@Before
public void refreshPage() {
driver.navigate().refresh();
}
public WebElement getSaveButton() {
return findDynamicElementByXPath(By.xpath("//*[@id=\"form:btnSave\"]"), 320);
}
320是很长的时间,但你必须确保给足够的时间来测试所有需要的东西。