我正在尝试从木偶操纵者e2e测试中的div中获取值。html和js的pice看起来有点像这样。问题在于结果。当我使用id运行这段代码时,它的结果实际上是控制台中的一个空行。
但是,如果我将},'[data-testid="TestID10"]')替换为注释代码行,我会在控制台中得到正确的响应'Hello World‘。(注意:在使用puppeteer时,使用完整的html选择器路径不是一个好的做法)
有没有人能告诉我为什么这个不能和身份证一起工作?既然使用HTML选择器真的是一种糟糕的做法,那么我该如何解决这个问题呢?
致以亲切的问候!
const value1 = await page
.waitForSelector('[data-testid="TestID10"]')
.then(() => {
return Promise.resolve(
page.evaluate((path) => {
return window.document
.querySelector(path)
.value;
},'[data-testid="TestID10"]')
)
});
console.log(value1);
// },'#0-row-0 > div > div.TableCell.row-0.col-0.TextInputCell > div')<div class="TextInputCell" data-testid="TestID10">
<span class="value">Hello Word</span>
</div
发布于 2018-02-13 19:13:44
下面的操作对我来说很好。请注意,我将selector放入variable,而不是使用字符串。另外,我返回的是innerText,而不是您示例中的value。HTH
const puppeteer = require('puppeteer');
async function run() {
const htmlStr = '<!doctype html><html><head></head>' +
'<body><div class="TextInputCell" data-testid="TestID10">' +
'<span class="value">Hello Word</span></div></body></html>';
const browser = await puppeteer.launch({
headless: false
});
const page = await browser.newPage();
await page.setContent(htmlStr);
const selector = '[data-testid="TestID10"]';
await page.waitForSelector(selector);
var innerText = await page.evaluate((sel) => {
return document.querySelector(sel).innerText;
}, selector);
console.log(innerText);
browser.close();
};
run();https://stackoverflow.com/questions/48761859
复制相似问题