- 先决条件:**
页面上有一个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中看到的那样(源代码是外部的)。
所以我不知道是什么。
1条答案
按热度按时间hwamh0ep1#
这是因为冻结的请求,这是在无限加载和阻止 chrome 。阻止该请求已经解决了我的问题。