将作为 LocateAll() 结果接收到的元素数组转换为空手道中的文本?
Convert array of elements received as a result of LocateAll() into text in Karate?
我正在尝试从 table 中获取项目名称列表。通过使用 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
对数组进行转换。请注意,我在空手道 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']
我正在尝试从 table 中获取项目名称列表。通过使用 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
对数组进行转换。请注意,我在空手道 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']