0

How in Playwright get in evaluate data from arguments? page.evaluate: ReferenceError: d is not defined

async function testEv(d) {
  const data = await this.page.evaluate(function() {
    console.log('d from args is', d)
  })
}
rd100
  • 1
  • 1
  • 1
  • Does this answer your question? [Playwright pass variable into eval with JavaScript (Node)](https://stackoverflow.com/questions/70284088/playwright-pass-variable-into-eval-with-javascript-node) – ggorlen Jul 18 '22 at 15:09

1 Answers1

3

You have to pass to the evaluate function a function that expects an argument. To avoid the confusion lets call it c, and then you pass d as a second argument to the evaluate.

async function testEv(d) {
  const data = await this.page.evaluate((c) {
    console.log('d from args is', c)
  }, d)
}

If you need to pass more than one argument you can pass an object

async function testEv(d) {
  const data = await this.page.evaluate((obj) {
    console.log('obj.foo from args is', obj.foo);
    console.log('obj.bar from args is', obj.bar);
  }, 
  {
    foo: d,
    bar: d,
  })
}
hardkoded
  • 18,915
  • 3
  • 52
  • 64