Selenim 4.7.2 +用于Java的ChromeDriver 108在切换到iframe期间超时失败

7uzetpgm  于 2023-02-07  发布在  Java
关注(0)|答案(1)|浏览(84)
    • 先决条件:**

页面上有一个iframe,其中包含我需要获取的输入字段。在与字段交互之前,我必须切换到iframe。

    • 版本**
  • Selenium的版本为4.7.2(我指的是id = selenium-devtools-v108的工件)
  • 独立 chrome 合金:108.0.5359.124
  • chromedriver-108.0.5359.71

我遇到了与切换到iframe相关的问题。ChromeDriver无法执行此操作,并失败,错误如下:
org.openqa.selenium.WebDriverException:org.openqa.selenium.TimeoutException:timeout:从呈现器接收消息时超时:60.000

    • 不起作用的代码:**
wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(
    By.cssSelector("#loginFrame")
));
    • Chrome选项**
options.setExperimentalOption("excludeSwitches", List.of("--enable-automation"));
            options.setExperimentalOption("useAutomationExtension", false);
            options.addArguments("--disable-extensions");
            options.addArguments("--disable-gpu");
            options.addArguments("--disable-dev-shm-usage");

            options.addArguments("--no-sandbox");

我已经尝试降级 chrome 驱动程序, chrome , selenium -没有改变。
最有趣的是,测试失败后重试3次,它不工作,在第一次,但它的工作,在第二次和第三次在同一页的预期。
为了避免像"有iframe吗"这样的问题,我可能会说"是的,有"。我通过分离等待元素并切换到它来检查它:已找到元素,但无法执行切换。
这段代码在旧版本的页面上运行良好,有时在当前版本上运行良好,但版本之间的唯一区别是元素的样式发生了变化,正如我在DOM中看到的那样(源代码是外部的)。
所以我不知道是什么。

hwamh0ep

hwamh0ep1#

这是因为冻结的请求,这是在无限加载和阻止 chrome 。阻止该请求已经解决了我的问题。

相关问题