如何从剧作家中读取文本框值

时间:2020-06-30 08:24:11

标签: node.js playwright

我在页面上输入了ID为“ email30”的文本字段,我正在尝试从Playwright读取它的值

  let dd_handle = await page.$("#email30");
  let value = await dd_handle.getAttribute("value");

尽管我在输入文本中有一个值,但是它返回“”。当我检查时,也没有看到value属性设置为当前值。

如下所示的普通JS代码为我提供了正确的值

document.getElementById("email30").value

不确定如何从剧作家框架中读取值。有人可以建议吗?他们的文档在这里没有帮助。

2 个答案:

答案 0 :(得分:4)

好吧,下面的代码终于为我完成了工作!

const value = await page.$eval("#email30", (el) => el.value);

答案 1 :(得分:4)

如何使用编剧/操纵角色来检索输入值有三个主要趋势。

page.evaluate

const value = await page.evaluate(el => el.value, await page.$('input'))

page.$eval

const value = await page.$eval('input', el => el.value)

page.evaluateElement.getAttribute

const value = await page.evaluate(() => document.querySelector('input').getAttribute('value'))

前两个将以非常相似的性能返回相同的结果,当我们偏爱另一个(也许一个:带有$eval的那个)时,我无法提出一个示例。如果您要在求值前操纵输入的值并且要检索新值,则不建议使用带有Element.getAttribute的第三个值。它将始终返回原始属性值,在大多数情况下,该属性值为空字符串。这是JavaScript中attribute vs property value的主题。

但是,当您需要无法通过其他上述方法访问的属性(例如:类名,数据属性,aria属性等)时,将page.evaluateElement.getAttribute一起使用会很方便