Chrome Webdriver 版本 106 进入异常 > uniqueContextId 未找到

Fra*_*ank 2 exception webdriver selenium-chromedriver

元素存在异常

我最近将Chrome及其网络驱动程序从版本103更新到版本106。所附图像中包含的之前可以正常工作的代码现在出现异常,并显示以下错误消息:

“OpenQA.Selenium.WebDriverException:无效参数:找不到 uniqueContextId(会话信息:chrome=106.0.5249.62)”

我发现抛出异常的点如下 ExpectedConditions.ElementExists(loadingLocator)

有人有建议或者已经遇到了所描述的问题吗?

谢谢

TEH*_*RAH 5

如果您在框架或窗口之间切换并立即搜索元素,这可能会导致问题。如果框架已关闭,即使您切换到默认上下文,元素搜索仍然可能会转到不再存在的旧上下文,这并非完全不可能。

我会尝试让它慢一些。在切换到该帧之前检查该帧是否存在。切换回来并检查您是否确实切换到了默认上下文。检查是否没有其他框架。避免检查该框架中可能存在的元素。

在 github 上快速搜索 chrome 相关项目可以得到以下结果:

https://github.com/v8/v8/blob/9c012f1143703d0353e7a8092d1723aef870cfc3/src/inspector/v8-runtime-agent-impl.cc#L212这可能表明(考虑到存储库性质)您的网站包含一些棘手的javascript(对于打开框架,例如)和 chrome/chromedriver/selenium 在执行时都会感到惊讶。

UPD

似乎在 Chrome/chromedriver 104(或 105)之前,允许检查默认上下文的元素而不切换到它,而当前框架不再存在(从 DOM 中删除)。这不是正确的行为,但在某个时候它是被允许的,异常在内部被抑制。

当您进行冲击升级到版本 109 时,如果启用了实验选项,则可以可靠地重现此异常。似乎是负责验证框架(在本例中)(上下文)uniqueContextId的机制的一部分。am I in the right place to do this action不幸的是,chrome 命令行似乎没有选项来切换此行为,并且与selenium 源uniqueContextId是互斥的(链接可能不复存在,只需插入活动版本而不是 v110)contextId

在检查框架之前,您应该始终切换回框架,即使它是默认内容。没有继承权。