кукловод как получить элемент tagName - PullRequest
0 голосов
/ 04 января 2019

Я хотел бы получить tagName элемента.В следующем примере должно быть button.

const puppeteer = require('puppeteer')

async function run () {
  const browser = await puppeteer.launch({headless: false})
  const page = await browser.newPage()
  const html = `
    <div>
    <button type="button">click me</button>
    <span>Some words.</span>
    </div>
  `
  await page.setContent(html)
  const elements = await page.$$('button')
  const tagName = await elements[0].$eval('*', node => node.tagName)
  console.log(tagName) // expect to be 'button'
  await browser.close()
}

run()

В сообщении об ошибке указано: Error: failed to find element matching selector "*"

Я могу сказать, elements соответствует одному элементу, поскольку elements.length равно 1

Где не так?

========== Редактировать ==========

Допустим, у меня уже был elements заранеекак вытащить tagName из него.

Спасибо!

1 Ответ

0 голосов
/ 04 января 2019

Попробуйте использовать page.$eval для выбора кнопки, а затем получите tagName от кнопки:

const tagName = await page.$eval('button', button => button.tagName);

Если у вас уже есть elementHandle как elements[0], вы можете получить атрибут из этого элемента, передав его через page.evaluate:

const tagName = await page.evaluate(
  element => element.tagName,
  elements[0]
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...