首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在空手道用户界面中使用javascript executor?

如何在空手道用户界面中使用javascript executor?
EN

Stack Overflow用户
提问于 2020-03-10 11:15:04
回答 1查看 2.8K关注 0票数 1

首先,空手道用户界面自动化是一个非常棒的工具。我很喜欢用空手道编写UI测试。我遇到一种情况,在这种情况下,我试图获取shadowRoot元素。我很少读到与空手道的javascript执行者有关的类似文章,并且知道它已经被回答了。建议使用driver.eval。但是在空手道0.9.5中没有Karate,它有script()或scriptAll()。我已经读过几次文档,想知道如何在元素中获取元素,但没有运气。使用传统的selenium+java,我们可以以这种方式获取shadowRoot :类似于驻留在父元素(如div或body )中的shadowRoot。

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

所以我在空手道用户界面上尝试了下面的方法

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

我敢打赌有一种方法可以使用空手道UI来获得这个shadowRoot元素,但是我几乎没有选择了,并且无法理解这一点。有人能帮我查一下这个吗?

-San

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-10 13:03:02

您能否切换到XPath,看看这是否有帮助:

代码语言:javascript
复制
* def temp = script('//downloads-manager', '_.innerHTML')

否则,请以这种格式提交一个示例,以便我们可以调试:https://github.com/intuit/karate/tree/develop/examples/ui-test

编辑:在您在评论中发布了指向hangouts示例的链接之后,我发现了能够工作的JS:

代码语言:javascript
复制
* driver 'http://html5-demos.appspot.com/hangouts'
* waitFor('#hangouts')
* def heading = script('hangout-module', "_.shadowRoot.querySelector('h1').textContent")
* match heading == 'Paul Irish'

这需要一些尝试和错误,并摆弄DevTools控制台来解决这个问题。因此,好消息是,您可以使用任何您需要的JS,并且需要知道调用.shadowRoot的哪个HTML元素。

编辑:关于空手道中JS的其他示例:https://stackoverflow.com/a/60800181/143475

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

https://stackoverflow.com/questions/60616495

复制
相关文章

相似问题

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