有人可以在这里解释可能出什么问题吗
Stack(
children: <Widget>[
ListView(
controller: scrollController,
children: <Widget>[
Container(
child: Text('widget 1'),
),
Container(
child: Text('widget 2'),
),
Container(
child: Text('widget 3'),
),
],
),
Image.asset('assets/myImage.png'),
],
),
我已经尝试过page.wait ....,但无济于事,同样的错误
错误
await page.click('some-selector-that-devtools-confirms-is-definitely-there')
let peeps = await page.evaluate(() =>
{
document.querySelector('some-selector-that-devtools-confirms-is-definitely-there')
}
);
console.log('classes: '+peeps.classList)
顺便说一句,是否有最佳实践来找出元素是否具有特定的CSS类?
答案 0 :(得分:1)
您在这里有两个问题。
您不会返回document.querySelector('some-selector-that-devtools-confirms-is-definitely-there')
,因此变量peeps
将是未定义的
您期望可以使用page.evaluate()返回任何值。但是请注意,您只能返回一个serializable值,因此无法使用此方法从页面环境中返回一个元素或NodeList
。
示例以classlist
返回page.evaluate()
。
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://google.com", { waitUntil: "networkidle2" });
const classList = await page.evaluate(() => {
return [...document.querySelector("div").classList];
});
console.log(classList);
await browser.close();
})();
答案 1 :(得分:1)
您的代码有两个主要问题:
evaluate
方法未返回任何内容; classList
方法内访问evaluate
这是一个例子:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://stackoverflow.com/");
const classes = await page.evaluate(() => {
return document.querySelector("body").classList;
});
console.log(classes);
await browser.close();
})();
作为一种替代方法,您可以使用getProperty("className")
:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto("https://stackoverflow.com/");
const el = await page.$("body");
const className = await el.getProperty("className");
const classes = className._remoteObject.value.split(" ");
console.log(classes);
await browser.close();
})();