pba*_*ski 140 selenium refresh webdriver selenium-webdriver
我正在寻找更优雅的方式来在测试期间刷新网页(我使用Selenium2).我只是发送F5键,但我想知道驱动程序是否有刷新整个网页的方法这是我的代码
while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 )
driver.findElement(By.xpath("//body")).sendKeys(Keys.F5);
//element appear after text READY is presented
driver.findElement(By.cssSelector("div.column a")).click();
Run Code Online (Sandbox Code Playgroud)
也许是在手动刷新页面上查找元素的更好解决方案
Man*_*ngh 275
在Java或JavaScript中:
driver.navigate().refresh();
Run Code Online (Sandbox Code Playgroud)
这应该刷新页面.
Isa*_*aac 62
在Python中有一种方法可以做到这一点:driver.refresh()
.它在Java中可能不一样.
或者,你可以driver.get("http://foo.bar");
,虽然我认为刷新方法应该工作得很好.
Md.*_*ker 44
在python中
使用内置方法
driver.refresh()
Run Code Online (Sandbox Code Playgroud)
或者,执行JavaScript
driver.execute_script("location.reload()")
Run Code Online (Sandbox Code Playgroud)
San*_*eep 19
使用Selenium Webdriver刷新网页的5种不同方法
没有特殊的额外编码.我刚刚以不同的方式使用现有函数来使其工作.他们来了 :
使用sendKeys.Keys方法
driver.get("https://accounts.google.com/SignUp");
driver.findElement(By.id("firstname-placeholder")).sendKeys(Keys.F5);
Run Code Online (Sandbox Code Playgroud)使用navigate.refresh()方法
driver.get("https://accounts.google.com/SignUp");
driver.navigate().refresh();
Run Code Online (Sandbox Code Playgroud)使用navigate.to()方法
driver.get("https://accounts.google.com/SignUp");
driver.navigate().to(driver.getCurrentUrl());
Run Code Online (Sandbox Code Playgroud)使用get()方法
driver.get("https://accounts.google.com/SignUp");
driver.get(driver.getCurrentUrl());
Run Code Online (Sandbox Code Playgroud)使用sendKeys()方法
driver.get("https://accounts.google.com/SignUp");
driver.findElement(By.id("firstname-placeholder")).sendKeys("\uE035");
Run Code Online (Sandbox Code Playgroud)小智 16
找到了各种方法来刷新硒中的应用: -
1.driver.navigate().refresh();
2.driver.get(driver.getCurrentUrl());
3.driver.navigate().to(driver.getCurrentUrl());
4.driver.findElement(By.id("Contact-us")).sendKeys(Keys.F5);
5.driver.executeScript("history.go(0)");
Run Code Online (Sandbox Code Playgroud)
有关实时代码,请参阅http://www.ufthelp.com/2014/11/Methods-Browser-Refresh-Selenium.html链接.
替代页面刷新(F5)
driver.navigate().refresh();
Run Code Online (Sandbox Code Playgroud)
(要么)
Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.F5).perform();
Run Code Online (Sandbox Code Playgroud)
需要注意的一件重要事情是 driver.navigate().refresh() 调用有时似乎是异步的,这意味着它不会等待刷新完成,它只是“开始刷新”并且不会阻止进一步执行当浏览器重新加载页面时。
虽然这似乎只发生在少数情况下,但我们认为最好通过添加手动检查页面是否真的开始重新加载来确保 100% 有效。
这是我在我们的基页对象类中为此编写的代码:
public void reload() {
// remember reference to current html root element
final WebElement htmlRoot = getDriver().findElement(By.tagName("html"));
// the refresh seems to sometimes be asynchronous, so this sometimes just kicks off the refresh,
// but doesn't actually wait for the fresh to finish
getDriver().navigate().refresh();
// verify page started reloading by checking that the html root is not present anymore
final long startTime = System.currentTimeMillis();
final long maxLoadTime = TimeUnit.SECONDS.toMillis(getMaximumLoadTime());
boolean startedReloading = false;
do {
try {
startedReloading = !htmlRoot.isDisplayed();
} catch (ElementNotVisibleException | StaleElementReferenceException ex) {
startedReloading = true;
}
} while (!startedReloading && (System.currentTimeMillis() - startTime < maxLoadTime));
if (!startedReloading) {
throw new IllegalStateException("Page " + getName() + " did not start reloading in " + maxLoadTime + "ms");
}
// verify page finished reloading
verify();
}
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
同样,在绝大多数情况下,do/while 循环只运行一次,因为在浏览器真正完全重新加载页面之前,navigate().refresh() 之外的代码不会被执行,但我们已经看到过这样的情况它实际上需要几秒钟才能完成该循环,因为导航()。刷新()直到浏览器完成加载才阻止。
归档时间: |
|
查看次数: |
290374 次 |
最近记录: |