【发布时间】:2021-12-23 15:01:12
【问题描述】:
首先,空手道 UI 自动化是非常棒的工具。在使用空手道编写 UI 测试时,我有点享受它。我遇到了一种情况,我试图获取 shadowRoot 元素。我阅读了一些与 javascript executor with karate 相关的类似帖子,并了解到它已经得到了回答。推荐使用 driver.eval。但是在空手道 0.9.5 中没有 eval,它有 script() 或 scriptAll()。我已经多次阅读文档以弄清楚如何在元素中获取元素但没有运气。 使用传统的 selenium+java,我们可以这样获取 shadowRoot: 像 shadowRoot 这样的东西,它位于 div 或 body 等父元素内。
//downloads-manager is the tagname and under that downloads-manager, a shadowRoot element exists
The HTML looks like this. it is from chrome://downloads.
<downloads-manager>
#shadow-root(open)
</download-manager>
WebElement downloadManager =driver.findElement(By.tagName("downloads-manager");
WebElement shadowRoot= (WebElement)((JavaScriptExecutor)driver)
.executeScript("return arguments[0].shadowRoot",downloadManager);
所以我在空手道 UI 中尝试了以下操作
script("downloads-manager","return _.shadowRoot"); //js injection error
script('downloads-manager', "function(e){ return e.shadowRoot;}"); // same injection error as mentioned above.
def shadowRoot = locate("downloads-manager").script("function(e){return e.shadowRoot};"); //returns an empty string.
我敢打赌,有一种方法可以使用 Karate UI 获取此 shadowRoot 元素,但我有点用完了选项,无法弄清楚这一点。 有人可以调查一下并帮助我吗?
-桑
【问题讨论】:
标签: karate