首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Selenium:切换到iframe to shadow-root open to webview

Java Selenium:切换到iframe to shadow-root open to webview
EN

Stack Overflow用户
提问于 2018-08-01 17:09:09
回答 3查看 1.3K关注 0票数 5

我正在尝试使用Java Selenium在我的node webkit应用程序上自动执行一些测试。它的工作方式是chromedriver附加到主窗口,但我访问的任何站点都是在DOM中作为webview的,如下所示:

与DOM合影:

我该如何解决这个问题呢?在java中展开阴影根元素并尝试将上下文切换到它下面的iframe之后,我得到了随机错误(在我看来),这些错误与我正在调用的函数无关。例如:

代码语言:javascript
复制
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"));

第二行给了我一个“isShown的参数必须是元素类型”,但这没有意义,因为我没有调用isShown函数。

EN

回答 3

Stack Overflow用户

发布于 2018-08-01 19:19:54

根据您的问题,在展开影子根元素后,将所需<iframe>的WebDriverWait导出为frameToBeAvailableAndSwitchToIt,如下所示:

代码语言:javascript
复制
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")));

注意:根据您分享的屏幕截图,标识为By.className("input-btn-group")的元素是不可见的,也不包括在答案中。

票数 0
EN

Stack Overflow用户

发布于 2019-11-28 22:10:40

我们可以按照以下3个步骤切换到shadow dow内部的iframe

步骤1:获取阴影根元素

第2步:使用卷影根元素查找iframe web元素

步骤3:现在切换到我们在步骤2中获得的iframe

代码语言:javascript
复制
loc = Locator.new(:xpath,"//locator_used_to_get_shadow_root")
sr = @driver.gets_shadow_root(loc)

iframe_inside_shadowroot = sr.find_elements(:css, "iframe")

driver.switch_to.frame(iframe_inside_shadowroot)
票数 0
EN

Stack Overflow用户

发布于 2020-08-24 17:11:37

为电子解决类似的问题。在电子,他们有他们自己的包装器在webview之上,这是基于Chromium webview。

但是对于chrome webdriver的解决方案可能是相同的。

https://stackoverflow.com/a/63227482/4577788

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51629411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档