Javascript 木偶演员JS正在等待能够选择多个下拉列表
目前,我正在尝试从动态网页中选择多个下拉列表。必须选择每个选项,才能获得所需的值 当我加载页面并尝试选择如下下拉列表时:Javascript 木偶演员JS正在等待能够选择多个下拉列表,javascript,puppeteer,Javascript,Puppeteer,目前,我正在尝试从动态网页中选择多个下拉列表。必须选择每个选项,才能获得所需的值 当我加载页面并尝试选择如下下拉列表时: await page.evaluate(() => { document.querySelector('#paper > option:nth-child(2)').selected = true; document.querySelector('#color > option:nth-child(3)').selected = true;
await page.evaluate(() => {
document.querySelector('#paper > option:nth-child(2)').selected = true;
document.querySelector('#color > option:nth-child(3)').selected = true;
document.querySelector('#coating > option:nth-child(2)').selected = true;
})
const sleep = require('sleep');
我无法选择下拉列表。我想这是因为页面还没有加载。为了解决这个问题,我添加了一个名为sleep的阳极模块
我按如下方式导入睡眠模块:
await page.evaluate(() => {
document.querySelector('#paper > option:nth-child(2)').selected = true;
document.querySelector('#color > option:nth-child(3)').selected = true;
document.querySelector('#coating > option:nth-child(2)').selected = true;
})
const sleep = require('sleep');
然后我尝试在每个选择器之间进行一秒钟的睡眠,这样它就有时间加载了
sleep.sleep(1);
await page.evaluate(() => {
document.querySelector('#paper > option:nth-child(2)').selected = true;
sleep.sleep(1);
document.querySelector('#color > option:nth-child(3)').selected = true;
sleep.sleep(1);
document.querySelector('#coating > option:nth-child(2)').selected = true;
})
我的问题是第一次睡眠起作用。然而,wait page.evaluate中的sleep.sleep(1)表示睡眠是未定义的。我不确定为什么会发生这种情况,因为const sleep在我的文档顶部声明,所以它应该是全局范围。有人能告诉我为什么睡眠不起作用吗?在尝试更改相应的选定属性之前,您应该使用以确保元素已加载:
await Promise.all([
page.waitForSelector('#paper > option:nth-child(2)'),
page.waitForSelector('#color > option:nth-child(3)'),
page.waitForSelector('#coating > option:nth-child(2)'),
]);
await page.evaluate(() => {
document.querySelector('#paper > option:nth-child(2)').selected = true;
document.querySelector('#color > option:nth-child(3)').selected = true;
document.querySelector('#coating > option:nth-child(2)').selected = true;
});
sleep
函数无法在内部工作的原因是函数中的代码是在page DOM环境中执行的,而不是在Node.js/puppeter环境中执行的
您可以将参数传递给page.evaluate()
,但参数必须是: