黄瓜傀儡师。向箭头函数传递参数有问题

问题描述 投票:0回答:1

这是一个cucumber 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个回答
1
投票

你应该在evaluate arrow函数后传递参数。page.evaluate(pageFunction, ...pageFunction arguments). 文件.

  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;
  }

© www.soinside.com 2019 - 2024. All rights reserved.