我可以登录,但是我需要单击没有ID的div,但我不知道该怎么做
这是html元素。 Onclick事件(devtool属性)在具有路由的div上(类route-redirect-box)
如何单击此链接转到“ listachamados”页面?
页面html:
<div class="menu-lateral-contraido-sub-container" title="Lista de Chamados" draggable="true" style="opacity: 1;">
<div to="/main/listachamado/" class="route-redirect-box"><div class="menu-lateral-item-contraido-container cor-tema-topo-fundo ">
<div class="menu-lateral-item-contraido-icon"><i class="ellevo-icons">lista_chamado</i></div></div></div></div>
<div class="menu-lateral-item-contraido-icon"><i class="ellevo-icons">lista_chamado</i></div>
<i class="ellevo-icons">lista_chamado</i>
我的代码:
const puppeteer = require('puppeteer');
let scrape = async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
await page.goto('https://notreal.br/', {waitUntil: 'load'});
console.log(page.url());
const SELETOR_USUARIO = '#usuario';
const SELETOR_SENHA = '#senha';
const usuario = 'username';
const senha = 'password';
await page.type(SELETOR_USUARIO, usuario);
await page.type(SELETOR_SENHA, senha);
//await page.waitForNavigation();
console.log(page.url());
await Promise.all([
page.click('#login'),
page.waitForNavigation({ waitUntil: 'networkidle0' })
//page.click('.menu-lateral-item-contraido-container cor-tema-topo-fundo'),
]);
await Permise.all([
page.waitFor('load'),
await page.evaluate(() => {
let lista = document.getElementsByClassName('div.route-redirect-box')
lista.click()
//page.click(lista)
})
]);
//browser.close();
};
scrape().then((value) => {
console.log(value);
});
答案 0 :(得分:2)
您拼写错误的myArray.sort(myFunction.apply(null, [,,false]))
。应该是Promise.all
。
但是您可能不需要使用Permise.all
,因为您可以简单地await
您调用的Puppeteer方法。
此外,由于onclick
事件是附加到Promise.all
元素上的,因此您可以使用page.click()
或page.evaluate()
单击该元素:
.route-redirect-box
或者,由于您似乎知道您要重定向到的页面的URL,因此您可以使用另一个page.goto()
进行手动导航:
await page.click('.route-redirect-box');
await page.evaluate(() => {
document.querySelector('.route-redirect-box').click();
});
另一种替代解决方案是,如果您知道将要执行的功能onclick
,则可以只在page.evaluate()
内执行功能本身:
await page.goto('https://example.com/main/listachamado/');