我可以登录,但我需要单击一个没有 id 的 div,但我不知道该怎么做
这是 html 元素。Onclick 事件(devtool 属性)位于具有路由(路由重定向框类)的 div 上
我怎样才能点击这个链接去“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>
Run Code Online (Sandbox Code Playgroud)
我的代码:
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);
});
Run Code Online (Sandbox Code Playgroud)
你拼错了Permise.all。它应该是Promise.all。
但您可能不需要使用,Promise.all因为您只需调用await您调用的 Puppeteer 方法即可。
此外,由于onclick事件附加到.route-redirect-box元素,您可以使用page.click()或page.evaluate()单击该元素:
await page.click('.route-redirect-box');
await page.evaluate(() => {
document.querySelector('.route-redirect-box').click();
});
Run Code Online (Sandbox Code Playgroud)
或者,由于您似乎知道尝试重定向到的页面的 URL,因此您可以使用另一个页面page.goto()来手动导航:
await page.goto('https://example.com/main/listachamado/');
Run Code Online (Sandbox Code Playgroud)
另一种替代解决方案是,如果您知道将要执行的函数onclick,则可以在以下内容中执行该函数本身page.evaluate():
await page.evaluate(() => {
function_to_be_executed_onclick();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15374 次 |
| 最近记录: |