问题描述
我想针对一个网页编写一个测试,该网页在一个简单的 HTML 表格中返回一堆数据。其中一列是订单号 - 所以我想获得一个订单号列表。在 Selenium 中,这真的很简单 Elements _elements = Driver.FindElements(Map.OrderNumbers.FoundBy);
其中“Map.OrderNumbers”是一个简单的 XPath 表达式。我尝试使用 Playwright 等效项
const orderNumbers = await page.$$(Map.OrderNumbers)
但这不起作用 - 它只是给了我很多无用的 GUID 和元素句柄。我只想要一个数字数组。我试着到处找例子,但没有找到。
解决方法
page.$$()
返回元素句柄的承诺,这是预期的行为。
如果您需要检索某些文本或值,则需要以不同的方式进行。这取决于具体的 DOM,因为你不共享它,所以很难帮助你,但作为一个例子,假设那些元素有一个你想要检索的 value 属性,那么这将是一种方式:
const orderNumbers = await page.$$eval('.myelement',el => el.value);
在此之后,您最终会得到从这些 .myelement
元素的 vlaue 属性中检索到的具体值数组。