Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复未知错误:未处理的检查器错误:";找不到具有指定id的上下文;_Java_Selenium_Selenium Webdriver_Webdriver_Selenium Chromedriver - Fatal编程技术网

Java 如何修复未知错误:未处理的检查器错误:";找不到具有指定id的上下文;

Java 如何修复未知错误:未处理的检查器错误:";找不到具有指定id的上下文;,java,selenium,selenium-webdriver,webdriver,selenium-chromedriver,Java,Selenium,Selenium Webdriver,Webdriver,Selenium Chromedriver,下面的代码偶尔抛出一个org.openqa.selenium.WebDriverException WebElement element = driver.findElement(by); element.click(); (new WebDriverWait(driver, 4, 100)).until(ExpectedConditions.stalenessOf(element)); 该页面如下所示(by是的选择器) ... 消息为未知错误:未处理的检查器错误:{“code”:-320

下面的代码偶尔抛出一个
org.openqa.selenium.WebDriverException

WebElement element = driver.findElement(by);
element.click();
(new WebDriverWait(driver, 4, 100)).until(ExpectedConditions.stalenessOf(element));
该页面如下所示(by是
的选择器)


...
消息为
未知错误:未处理的检查器错误:{“code”:-32000,“消息”:“找不到具有指定id的上下文”}
<代码>元素是
iframe
的一部分,单击可导致
iframe
的内容重新加载。在等待时引发异常。此异常意味着什么?我如何修复它?

此错误消息

unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot find context with specified id"}
…表示WebDriver实例无法找到所需的元素

正如您在问题中提到的,元素是
的一部分,并调用
单击()
会导致重新加载iframe的内容,在这种情况下,您需要遍历回
默认内容
,然后使用WebDriverWait再次切换回所需的
iframe
,然后针对
Stalennessof()
上一个元素或存在下一个所需元素诱导WebDriverWait,如下所示:

WebElement element = driver.findElement(by);
element.click();
driver.switchTo().defaultContent(); // or driver.switchTo().parentFrame();
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.name("xyz")));
// wait for stalenessOf previous element (visibility of next desired element preferred)
new WebDriverWait(driver, 4, 100).until(ExpectedConditions.stalenessOf(element));
// or wait for visibility of next desired element (preferred approach)
new WebDriverWait(driver, 4, 100).until(ExpectedConditions.visibilityOfElementLocated(next_desired_element));

使用页面的dom结构更新您的问题。首先切换到iframe,然后找到元素并单击它。Works,但是,
frametobeavailable和switchtoit
能否返回,因为旧的
iframe
仍然可用?@user3561614顾名思义,
frametobeavailable和switchtoit
涉及服务员和
切换。所以我不会再回来了。
WebElement element = driver.findElement(by);
element.click();
driver.switchTo().defaultContent(); // or driver.switchTo().parentFrame();
new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.name("xyz")));
// wait for stalenessOf previous element (visibility of next desired element preferred)
new WebDriverWait(driver, 4, 100).until(ExpectedConditions.stalenessOf(element));
// or wait for visibility of next desired element (preferred approach)
new WebDriverWait(driver, 4, 100).until(ExpectedConditions.visibilityOfElementLocated(next_desired_element));