【问题标题】:Cucumber Puppeteer: Problem passing argument into arrow functionCucumber Puppeteer:将参数传递给箭头函数的问题
【发布时间】:2020-06-13 13:56:32
【问题描述】:

这是来自黄瓜 puppeteer 项目中的 world.js。

第一个代码块导致错误。但是,如果我像在第二个代码块中那样对选择器进行硬编码,则不会出现错误。 如何将参数传递给箭头函数,这样我就不必对选择器进行硬编码? TIA

硬编码选择器:有效

 async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
      await this.page.waitForSelector(selectorTitle);

      await this.page.waitForSelector(selectorDate);

      const originalDateStr = await this.page.evaluate(selectorDate => {
         let result = document.querySelector('div[class="rollmodel_cal_date"]');
         ////let result = document.querySelector(selectorDate);

         return result.innerText.trim();
      });

      const originalDate = utils.constructDate(originalDateStr);
      return originalDate;
   }

尝试将选择器作为参数传递:不起作用

 async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
      await this.page.waitForSelector(selectorTitle);

      await this.page.waitForSelector(selectorDate);

      const originalDateStr = await this.page.evaluate(selectorDate => {
           /////let result = document.querySelector('div[class="rollmodel_cal_date"]');
           let result = document.querySelector(selectorDate);

           return result.innerText.trim();
      });

      const originalDate = utils.constructDate(originalDateStr);
      return originalDate;
   }

【问题讨论】:

    标签: cucumber puppeteer arrow-functions


    【解决方案1】:

    你应该在评估箭头函数之后传递参数。像这样page.evaluate(pageFunction, ...pageFunction arguments)docs.

      async getOriginalForecastDate(selectorTitle, selectorDate, wait = 0) {
        await this.page.waitForSelector(selectorTitle);
    
        await this.page.waitForSelector(selectorDate);
    
        const originalDateStr = await this.page.evaluate(
          (selectorDate, arg1, arg2) => {
            /////let result = document.querySelector('div[class="rollmodel_cal_date"]');
            let result = document.querySelector(selectorDate);
    
            return result.innerText.trim();
          },
          selectorDate,
          arg1,
          arg2,
        );
    
        const originalDate = utils.constructDate(originalDateStr);
        return originalDate;
      }
    
    

    【讨论】:

    • 谢谢艾哈迈德。我看到您也必须在箭头函数的末尾添加参数。
    • 不客气,亲爱的。是的,您应该在箭头函数的末尾添加参数。 to 可以在箭头函数中访问它。
    猜你喜欢
    • 2018-12-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2019-07-13
    • 2018-06-26
    • 2017-08-21
    • 2011-11-01
    相关资源
    最近更新 更多