NodeJS / Puppeteer-按标题单击div?

时间:2018-10-10 22:20:51

标签: javascript node.js google-chrome-devtools puppeteer headless-browser

我必须用div单击title="Lista de Chamados"。我尝试了几种不同的方法,但是没有任何效果。 div是可拖动的,因此最后一个解决方案无法解决(并且不起作用)。

如何单击div title="Lista de Tarefas"(独立于其位置)?

const puppeteer = require('puppeteer');

let scrape = async () => {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    const URL = 'https://dummy.br/'

    await page.goto(URL, {waitUntil: 'load'});
    console.log(page.url());

    const SELETOR_USUARIO = '#usuario';
    const SELETOR_SENHA = '#senha';
    const usuario = 'usr';
    const senha = 'pass';

    await page.type(SELETOR_USUARIO, usuario);
    await page.type(SELETOR_SENHA, senha);

    //console.log(page.url());

    //FAZ LOGIN:
    page.click('#login'),
    page.waitForNavigation({ waitUntil: 'networkidle0' });


    //browser.close();
};

scrape().then((value) => {
    console.log(value); 
});

-编辑

...
    //FAZ LOGIN:
    await page.click('#login'),
    //await page.waitForNavigation({ waitUntil: 'networkidle0' }) //espera nova página carregar


    await page.waitForNavigation({waitUntil: "domcontentloaded"});

    //await page.click('div[title="Lista de Tarefas"]'); //Error: No node found for selector: div[title="Lista de Tarefas"]

/*  const seletor = 'div[title="Lista de Tarefas"]';
    const botao = await page.$(seletor);
    console.log(botao); //null
    botao.click(); */

    const botao = await page.evaluate( () => {
        let b = document.querySelector('div[title="Lista de Tarefas"]');
        console.log('in>>> ' + b); // b and b[0] are NULL
    });

这是我需要单击的元素的代码:

 <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>

1 个答案:

答案 0 :(得分:1)

您可以使用attribute selector内的page.click()[title=""]单击标题中的元素:

await page.click('div[title="Lista de Tarefas"]');