我有输入文本字段的ID为“email30”的页面上,我试图读取它的值从剧作家
let dd_handle = await page.$("#email30");
let value = await dd_handle.getAttribute("value");
然而,它返回“”,尽管我在输入文本中有一个值。当我检查时,我也没有看到value属性被设置为当前值。
正常的JS代码如下给我正确的值
document.getElementById("email30").value
不知道我怎么能从剧作家框架中读到价值。有没有人能给点建议?他们的文件在这里没什么帮助。
4条答案
按热度按时间anauzrmj1#
如何检索剧作家/ puppet 师的输入值有三个主要趋势。
page.evaluate
page.$eval
page.evaluate
与Element.getAttribute
前两个将返回相同的结果,具有非常相似的性能,我不能提出一个例子,当我们可以偏爱一个比另一个(也许一个:
$eval
的那个更短)。如果你在计算之前操作一个输入的值,并且你想检索新的值,那么不建议使用第三个Element.getAttribute
。它总是返回原始的属性值,在大多数情况下它是一个空字符串。这是JavaScript中attribute vs property value的主题。但是,当您需要无法使用其他提到的方法访问的属性时,
page.evaluate
和Element.getAttribute
可以很方便(例如:类名、数据属性、aria属性等)4xrmg8kj2#
好了,最后下面的代码为我做了工作!
p8ekf7hl3#
这是目前为止效果最好的
nimxete24#
Playwright更喜欢定位器而不是Puppeteer风格的
$
和eval
方法。使用locator
,您可以使用inputValue
来获取一个或多个元素的当前输入值。您还可以直接调用
page.inputValue(selector)
来获取第一个匹配选择器的输入值,但现在不鼓励这样做,而是支持定位器方法。下面是几个最小的完整示例:
如果有多个元素: