Ale*_*lea 5 java iframe selenium webview shadow-dom
我正在尝试使用 Java Selenium 在我的节点 webkit 应用程序上自动化一些测试。它的工作方式是 chromedriver 附加到主窗口,但我访问的任何站点都作为 webview 在 DOM 中,如下所示:
带有 DOM 的图片:

我将如何处理这个问题?在 java 中扩展 shadow root 元素并尝试将上下文切换到它下面的 iframe 之后,我只是得到与我正在调用的函数无关的随机错误(在我看来)。例如:
WebElement shadowRoot = expandShadowElement(root);
WebElement iframe = shadowRoot.findElement(By.cssSelector("iframe"));
Driver.getWebDriver().switchTo().frame(iframe);
WebElement city = Driver.getWebDriver().findElement(By.className("input-btn-group"));
Run Code Online (Sandbox Code Playgroud)
第二行给了我一个“isShown 的参数必须是元素类型”,但这没有意义,因为我没有调用 isShown 函数。
根据您的问题,一旦扩展影子根元素,就会导致WebDriverWait<iframe>成为所需的frameToBeAvailableAndSwitchToIt,如下所示:
WebElement shadow_root = Driver.getWebDriver().findElement(By.xpath("//webview[@class='sel' and contains(@src,'https://www.google.com/?')][starts-with(@id,'w_Webo')]"));
WebElement shadow_root_element = (WebElement)((JavascriptExecutor)driver).executeScript("return arguments[0].shadowRoot", shadow_root);
new WebDriverWait(Driver.getWebDriver(), 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.tagName("iframe")));
Run Code Online (Sandbox Code Playgroud)
注意:根据屏幕截图,您共享的元素被标识为By.className("input-btn-group")不可见,并且不包含在答案中。
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |