Как нажать на нужную <div>с помощью Puppeteer? - PullRequest
0 голосов
/ 10 июля 2020

Вот мой код. Я работаю с автоматическим c тестированием с помощью Puppeteer.

<div class="Menu">
<label class="Kit__caption Header__username">Logged in as: BAF Agent</label>
<div class="menu-item">Help / FAQ</div>
<div class="menu-item">Submit Feedback</div>
<div class="menu-item">Sign Out</div>
</div>

Как выбрать последний div с текстом «выйти»?

1 Ответ

1 голос
/ 10 июля 2020

Вы можете попробовать этот селектор или этот xPath:

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    const html = `
      <!doctype html>
      <html>
        <head><meta charset='UTF-8'><title>Test</title></head>
        <body>
          <div class="Menu">
            <label class="Kit__caption Header__username">Logged in as: BAF Agent</label>
            <div class="menu-item">Help / FAQ</div>
            <div class="menu-item">Submit Feedback</div>
            <div class="menu-item">Sign Out</div>
          </div>
        </body>
      </html>`;

    await page.goto(`data:text/html,${html}`);

    let div = await page.$('div.Menu > div.menu-item:last-of-type');
    console.log(await page.evaluate(element => element.innerText, div));

    [div] = await page.$x('.//div[@class="Menu"]/div[@class="menu-item" and text()="Sign Out"]');
    console.log(await page.evaluate(element => element.innerText, div));

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();
...