NodeJS / Puppeteer - Нажмите на div по названию? - PullRequest
0 голосов
/ 11 октября 2018

Я должен нажать 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 голосов
/ 11 октября 2018

Вы можете использовать селектор атрибутов , [title=""] внутри page.click(), чтобы щелкнуть элемент по названию:

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