Нажмите флажок с кукловодом через идентификатор элемента - PullRequest
0 голосов
/ 11 октября 2019

У меня есть этот код кукловода:

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  const page = await browser.newPage();

  await page.goto("https://myurl.com/page");
  await page.waitForSelector("#select-all-checkbox");

  var bodyHTML = await page.content();
  console.log(bodyHTML + "\n\n");

  await page.click("#select-all-checkbox");
  await page.close();
  await browser.close();
})();

Записав HTML на консоль, я подтвердил, что на странице, к которой я обращаюсь, есть этот HTML:

<label><input type="checkbox" name="" id="select-all-checkbox" value="" checked=""><span class="ifaFs"><span data-testid="icon-checkbox-someselected" class="hdDWuD"></span></span></label>

Я получаю этоошибка в строке page.click :

(узел: 3827) UnhandledPromiseRejectionWarning: Ошибка: узел либо не виден, либо не является HTMLElement
в ElementHandle._clickablePoint (/path / to / node_modules / puppeteer / lib / JSHandle.js: 217: 13)
at process._tickCallback (внутренний / process / next_tick.js: 68: 7)
- ASYNC -
вElementHandle. (/path/to/node_modules/puppeteer/lib/helper.js:111:15)
в DOMWorld.click (/path/to/node_modules/puppeteer/lib/DOMWorld.js:367:18)
at process._tickCallback (internal / process / next_tick.js: 68: 7)
- ASYNC -
в кадре. (/path/to/node_modules/puppeteer/lib/helper.js:111:15)
at Page.click (/path/to/node_modules/puppeteer/lib/Page.js:1037:29)

1 Ответ

0 голосов
/ 11 октября 2019

Приведенный выше пример кода помог мне решить проблему.

(async () => {
  const browser = await puppeteer.launch({ args: ['--no-sandbox'] });
  const page = await browser.newPage();

  await page.goto("https://myurl.com/page");
  await page.waitForSelector("#select-all-checkbox");

  await page.evaluate(() => {
    document.querySelector("#select-all-checkbox").parentElement.click();
  });

  await page.close();
  await browser.close();
})();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...