gpt4 book ai didi

java - Selenium switchTo 返回错误 org.openqa.selenium.WebDriverException : unknown error: cannot determine loading status

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:57 25 4
gpt4 key购买 nike

我有点击超链接的场景,并会打开新标签(点击超链接后 Activity 窗口将移动到新标签)

当我尝试使用 switchTo() 方法将 webdriver 移动到新选项卡时,然后是 WebDriverWait.until 浏览器自动关闭并出现错误

org.openqa.selenium.WebDriverException: unknown error: cannot determine loading status
from no such execution context
(Session info: chrome=73.0.3683.103)

我使用 System.out.println(driver.getWindowHandle()),我可以看到驱动程序移动到新选项卡。

我如何解决上述错误?我尝试使用 Iterator for loop into windowHandle

似乎无法使用 WebDriverWait.until(ExpectedConditions) 来等待新标签页。总是报错 cannot determine loading status from no such execution context

奇怪的是,我可以使用 Thread.sleep(1000)

在这种情况下如何避免使用 Thread.sleep?因为隐式等待也行不通

使用 Thread.sleep() 的工作代码

public class MyCode {
private WebDriver driver;
private WebDriverWait wait;

@Test
public void openPrestaShopFromDemoWebsite() {
System.setProperty("webdriver.chrome.driver", "chromedriver");
ChromeOptions chromeOptions = new ChromeOptions()
.addArguments("--start-maximized", "--incognito");

driver = new ChromeDriver(chromeOptions);
driver.navigate().to("http://demo.prestashop.com");
wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("loadingMessage")));

driver.switchTo().frame("framelive");
String parentTab = driver.getWindowHandle();
driver.findElement(By.partialLinkText("Ecommerce software by PrestaShop")).click();

Set<String> windowHandles = driver.getWindowHandles();
Iterator<String> it = windowHandles.iterator();

while (it.hasNext()) {
String newTab = it.next();

if (!parentTab.equals(newTab)) {
driver.switchTo().window(newTab);

try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

wait.until(ExpectedConditions.titleIs("Create and develop your business with PrestaShop"));
driver.close();
}
}

driver.switchTo().window(parentTab);
driver.switchTo().frame("framelive");
assertThat(driver.findElement(By.linkText("Personal info")).isDisplayed());

driver.quit();

}
}

代码无效(无法从没有此类执行上下文的情况下确定加载状态)

public class MyCode {
private WebDriver driver;
private WebDriverWait wait;
private WebElement element;

@Test
public void openPrestaShopFromDemoWebsite() {
System.setProperty("webdriver.chrome.driver", "chromedriver");
ChromeOptions chromeOptions = new ChromeOptions()
.addArguments("--start-maximized", "--incognito");

driver = new ChromeDriver(chromeOptions);
driver.navigate().to("http://demo.prestashop.com");
wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("loadingMessage")));

driver.switchTo().frame("framelive");
String parentTab = driver.getWindowHandle();
driver.findElement(By.partialLinkText("Ecommerce software by PrestaShop")).click();

Set<String> windowHandles = driver.getWindowHandles();
Iterator<String> it = windowHandles.iterator();

while (it.hasNext()) {
String newTab = it.next();

if (!parentTab.equals(newTab)) {
driver.switchTo().window(newTab);

wait.until(ExpectedConditions.titleIs("Create and develop your business with PrestaShop"));
driver.close();
}
}

driver.switchTo().window(parentTab);
driver.switchTo().frame("framelive");
assertThat(driver.findElement(By.linkText("Personal info")).isDisplayed());

driver.quit();

}
}

最佳答案

几天来我一直遇到同样的问题,看来这实际上是 chromedriver 的问题。对我有用的解决方案是将以下标志/参数添加到您的 chromedriver 选项中:

--disable-site-isolation-trials

Here是我指的 chromedriver 问题(和解决方案)。

如果 flag 不起作用,您也可以尝试升级到 chromedriver v75

关于java - Selenium switchTo 返回错误 org.openqa.selenium.WebDriverException : unknown error: cannot determine loading status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com