Java 确认页面是否已加载
我有一个页面中的超链接列表,当我单击链接时,它们将重定向到新选项卡。如何确定页面是否已加载。我使用了do-while循环来确定元素是否被启用。但是我没有得到这样的元素。你能帮个忙吗。。下面是一段代码。我也尝试过显式等待。但同样的问题Java 确认页面是否已加载,java,selenium,Java,Selenium,我有一个页面中的超链接列表,当我单击链接时,它们将重定向到新选项卡。如何确定页面是否已加载。我使用了do-while循环来确定元素是否被启用。但是我没有得到这样的元素。你能帮个忙吗。。下面是一段代码。我也尝试过显式等待。但同样的问题 WebElement element7 = driver.findElement(By.id("MenuControlBNY_MenuNavBar_MenuControlBNY_MenuNavBar_p11__Tree_item_2_cell"));
WebElement element7 = driver.findElement(By.id("MenuControlBNY_MenuNavBar_MenuControlBNY_MenuNavBar_p11__Tree_item_2_cell"));
if (element7.isEnabled())
{
element7.click();
System.out.println(" Report is selected");
}
boolean element8 = false;
int count = 0 ;
do
{
element8 = driver.findElement(By.id("working")).isEnabled();
System.out.println("Report is loaded");
count = count+1;
if(count == 1000)
{
break;
}
}while(element8 == true);
我使用下面的方法,这是不言自明的
private static WebDriverWait wait = new WebDriverWait(driver, 60);
private static JavascriptExecutor js = (JavascriptExecutor) driver;
public static void waitForPageLoaded() {
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
Boolean res = (js.executeScript("return document.readyState").equals("complete"));
System.out.println("[DEBUG] waitForPageLoaded: " + res);
return res;
}
});
}
编辑:当页面处于就绪状态(即页面已加载)时,这将返回true。因此,您可以在搜索元素之前调用上述方法。您可以设置一个隐式等待,该等待将在查找元素时等待15秒
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
或者明确地说:
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("working")));
根据您提供的信息,我假设您已经单击了链接,页面在一个新选项卡中打开,然后您将得到这样的异常 在这种情况下,您需要使用窗口句柄切换到新选项卡,并使用explict wait for元素
String parentWindow= driver().getWindowHandle();
element7.click();
Set<String> myset = driver().getWindowHandles();
myset.remove(parentWindow);
driver().switchTo().window((String)myset.toArray()[0]);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id(locator)));
一位同事建议需要使用事件列表器函数。请提出建议并帮助解决这个问题我愿意对此进行更正,但我不相信有任何内置方法专门等待页面加载。类的第59行。方法将阻塞,直到加载实际完成,并读取更多内容,类第38行声明它很可能不会。使用WebElementclick方法粘贴上述方法时,出现两个错误。在until行中显示错误消息,并且脚本中未初始化js变量