Java 如何让Selenium等待页面加载,然后检查URL?
我看到了,它是Java 如何让Selenium等待页面加载,然后检查URL?,java,selenium,Java,Selenium,我看到了,它是wait+findElementBy的组合。 但是,我的问题略有不同,因为我需要在页面完全加载后检查URL(而不是元素) 我已经尝试了以下解决方案,但它对我不起作用: public void checkCurrentURL(String expectedURL) { driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // 5 seconds delay to load the page S
wait+findElementBy
的组合。
但是,我的问题略有不同,因为我需要在页面完全加载后检查URL(而不是元素)
我已经尝试了以下解决方案,但它对我不起作用:
public void checkCurrentURL(String expectedURL) {
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); // 5 seconds delay to load the page
String realURL = driver.getCurrentUrl();
System.out.println("------------------------------------URL is: "+realURL);
Assert.assertTrue(realURL.equals(expectedURL));
}
这是我的selenium版本:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
org.seleniumhq.selenium
我将selnium更新为3.14.0
,因为3.142.6
对我不起作用。隐式地使用wait
来配置搜索WebElement
时的最长查找时间,它在这里不相关,并且从现在起将影响驱动程序
,而不仅仅是在方法范围内
您可以使用WebDriverWait
并检查文档。readyState
new WebDriverWait(driver, pageLoadTimeout).until(
new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d) {
return d.executeScript("return document.readyState").equals("complete");
}
}
);
新建WebDriverWait(驱动程序,页面加载超时)。直到(
新的ExpectedCondition(){
@凌驾
公共布尔应用(WebDriver d){
return d.executeScript(“return document.readyState”)。等于(“complete”);
}
}
);
顺便说一句,3.4.0版已经很旧了(大约有2.5年了)。考虑更新到版本3.142.6(最新的非alpha版本)。 @ SalmanLashkarara,这可能是由于硒版本。我添加了另一个解决方案。@salmanashkarara我删除了第一个返回值
,请立即检查。由于旧的Selenium版本,WebDriver类型的executeScript(字符串)未定义。如果不打算升级,则需要使用JavascriptExecutor
:((JavascriptExecutor)驱动程序)代码>我将其更新为3.14.0
,因为我3.142.6
不适合我。这是我的POM:
The method until(Function<WebDriver,T>) in the type WebDriverWait is not applicable for the arguments ()
new WebDriverWait(driver, pageLoadTimeout).until(
new ExpectedCondition<Boolean>() {
@Override
public Boolean apply(WebDriver d) {
return d.executeScript("return document.readyState").equals("complete");
}
}
);