以下代码偶尔会抛出org.openqa.selenium.WebDriverException
。
WebElement element = driver.findElement(by);
element.click();
(new WebDriverWait(driver, 4, 100)).until(ExpectedConditions.stalenessOf(element));
页面看起来像这样(by 是<a></a>
的选择器(
<iframe name="name">
<html id="frame">
<head>
...
</head>
<body class="frameA">
<table class="table">
<tbody>
<tr>
<td id="83">
<a></a>
</td>
</tr>
</tbody>
</table>
</body>
</html>
</iframe>
消息unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot find context with specified id"}
。element
是iframe
的一部分,单击可能会导致重新加载iframe
的内容。等待时引发异常。此异常是什么意思,我该如何解决它?
此错误消息...
unknown error: unhandled inspector error: {"code":-32000,"message":"Cannot find context with specified id"}
。意味着Web 驱动程序实例无法找到所需的元素。
正如您在问题中提到的,该元素是<iframe>
的一部分,调用click()
可能会导致 iframe 的内容重新加载,在这种情况下,您需要遍历回defaultContent
并使用WebDriverWait再次切换回所需的iframe
,然后诱导WebDriverWaitstalenessOf()
上一个元素或下一个所需元素的存在,如下所示:
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));