将 LocateAll() 结果收到的元素数组转换为空手道中的文本?

2023-11-29

我正在尝试从表中获取项目名称列表。通过使用locateAll()方法,我可以获得元素列表,但是当我尝试将它们转换为文本值时,结果为空。

* def ProjectNames = locateAll("//div[@id='Projects']/@somePath")
* print ProjectNames 

以上代码显示

[DriverElement@aef32g2
DriverElement@ahf38g2
DriverElement@ayf12gj
DriverElement@ae032f2]

但期望得到如下结果:

[Project1
Project2
Project3
Project4]

为此我尝试过-* print ProjectNames.text.trim()但这没有显示任何内容并且步骤已通过。相反,当我针对特定索引值执行它时,它会显示该索引的文本* print ProjectNames[0].text.trim()。我该如何获取收到的完整列表? 提前致谢!


给定以下 HTML:

  <body>
    <div>first</div>
    <div>second</div>
  </body>  

如果你有一个数组,你可以map对数组进行转换。请注意,我在 Karate 1.0 中使用新的 JS 引擎:)

* def temp = locateAll('div')
* def vals1 = temp.map(x => x.text)
* match vals1 == ['first', 'second']

做你需要的事情的第二种方法是scriptAll(),参考文档:https://github.com/intuit/karate/tree/master/karate-core#scriptall

* def vals2 = scriptAll('div', '_.textContent')
* match vals2 == ['first', 'second']
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 LocateAll() 结果收到的元素数组转换为空手道中的文本? 的相关文章

随机推荐