querySelectorAll 不接受变量

问题描述

好吧,这个让我摸不着头脑。我已经定义了 getDataArrayForTargetColumn

async getDataArrayForTargetColumn() {
    if (await page.waitForSelector('[data-test-value-invoice-number-payment-requests-page="true"]')) {
        let targetColumnDataArray = await page.evaluate(() => {
            let tds = Array.from(document.querySelectorAll('[data-test-value-invoice-number-payment-requests-page="true"]'));
            return tds.map(td => td.textContent.trim());
        });
        return targetColumnDataArray;
    }
    return settings._neg_1;
}

getDataArrayForTargetColumn2 定义:

async getDataArrayForTargetColumn2(someCssSelector) {
    if (await page.waitForSelector(someCssSelector)) {
        let targetColumnDataArray = await page.evaluate(() => {
            let tds = Array.from(document.querySelectorAll(someCssSelector));
            return tds.map(td => td.textContent.trim());
        });
        return targetColumnDataArray;
    }
    return settings._neg_1;
}

当被调用时:

async verifySomething{
    let columnData = await this.getDataArrayForTargetColumn();
    let someCssSelector = '[data-test-value-invoice-number-payment-requests-page="true"]';
    let columnData2 = await this.getDataArrayForTargetColumn2(dog);
}

一个 columnData 有效,第二个 columnData2 无效。 columnData2 给了我一个

错误:评估失败:ReferenceError:someCssSelector 未定义

但它显然是。当我放置断点时,它似乎死在 let targetColumnDataArray = await page.evaluate(() => {

那么,大家怎么了?为什么我不能传入一个变量?我在这里错过了一些愚蠢的东西吗?

================================================ ==============

更新:

如果我将定义 CSS Selector 移动到本地函数中,这仍然不起作用。

async getDataArrayForTargetColumn2() {
    let someCssSelector = '[data-test-value-invoice-number-payment-requests-page="true"]';
    if (await page.waitForSelector(someCssSelector)) {
        let targetColumnDataArray = await page.evaluate(() => {
            let tds = Array.from(document.querySelectorAll(someCssSelector));
            return tds.map(td => td.textContent.trim());
        });
        return targetColumnDataArray;
    }
    return settings._neg_1;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)