【发布时间】:2020-05-16 08:16:29
【问题描述】:
await page.$eval('.class1' + variable + 'img.class2', el => el.ParentElement.innerHTML = '要替换的文本');
我也试过了
await page.evaluate((variable) '.class1' + variable + 'img.class2', el => el.ParentElement.innerHTML = '要替换的文本');
我知道包含此函数的所有 if 语句都是正确的,并且在检查器中,.class1VARIABLE img.class2 选择的 .ParentElement 返回适当的元素。
然而,当我运行第一个函数时,我在查找未定义的 ParentElement 时遇到错误,而当我运行第二个函数时,我在查找为 null 的 ParentElement 时遇到错误。是什么赋予了?我没有正确传递变量吗?我在评估错误的 DOM 吗? 'variable' 正在做正确的事情,在 for 语句中递增,并且我已经验证了它在将我带到这里的逻辑中的 console.log 调试语句是正确的。我什至尝试在函数内部对变量进行硬编码,例如
await page.evaluate(() '.class1VARIABLE img.class2', el => el.ParentElement.innerHTML = '要替换的文本');
我什至无法理解它是如何失败的,而且它也因 null 或 undefined 错误而崩溃。
我有点不知所措。
附:如果重要,则图像的 ParentElement 是 td。
【问题讨论】:
-
您的示例中似乎有一些错误:
await page.evaluate((variable) '.class1' + variable + ' img.class2', el => el.ParentElement.innerHTML = 'text to substitute');和await page.evaluate(() '.class1VARIABLE img.class2', el => el.ParentElement.innerHTML = 'text to substitute');在语法上是错误的。 -
...好的...你要指定如何?
-
抱歉,我不能确定,这些片段应该会引发语法错误。至少应该尝试这样的事情:
await page.evaluate((selector) => { document.querySelector(selector).ParentElement.innerHTML = 'text to substitute'; }, '.class1' + variable + ' img.class2');或await page.evaluate((selector) => { document.querySelector(selector).ParentElement.innerHTML = 'text to substitute'; }, '.class1VARIABLE img.class2'); -
它们不会抛出语法错误。我会试试你的建议。例如,选择器是“.class1VARIABLE img.class2”。
-
也许您引用它们时有一些遗漏或不准确的版本?对我来说,他们会抛出
SyntaxError: missing ) after argument list或SyntaxError: Unexpected token ')'。