代码之家  ›  专栏  ›  技术社区  ›  Nicolás A.

将参数从jQuery提取到JavaScript函数

  •  0
  • Nicolás A.  · 技术社区  · 7 年前

    我目前正在使用Puppeter,每当我调用这个函数时,“选择器”都是未定义的。

    async function verifyTextPresent(page, selector){
      let myButton = await page.evaluate(() => document.querySelector(selector).innerText);
      console.log(myButton);
    }

    错误:

    (node:6996) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Evaluation failed: ReferenceError: selector is not defined
        at <anonymous>:1:20
    (node:6996) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the
    Node.js process with a non-zero exit code.
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Raul Rueda    7 年前

    您需要将选择器传递到评估中,如下所示:

    async function verifyTextPresent(page, selector){
        let myButton = await page.evaluate((selector) => {
            document.querySelector(selector).innerText);
        }
        console.log(myButton);
    }
    

    我还喜欢使用$eval的快捷方式:

    let myButton = await page.$eval(selector, e => e.innerText);
    
        2
  •  0
  •   Nicolás A.    7 年前

    我最终得到了这个解决方案,改变了它得到的文字:

    async function verifyTextPresent(page, selector){
      let myButton= await page.$(selector);
      let selectorText = await (await elementForText.getProperty('innerText')).jsonValue();
          console.log(selectorText);
        }