Несвязанный ответ

ибудь знает, как получить innerHTML или текст элемента. Или даже лучше; как щелкнуть элемент с определенным innerHTML. Вот как это будет работать с обычным JavaScript:

var found = false
$(selector).each(function() {
                if (found) return;
                else if ($(this).text().replace(/[^0-9]/g, '') === '5' {
                    $(this).trigger('click');
                    found = true
                }

Заранее благодарю за любую помощь!

Ответы на вопрос(7)

аю следующее:

let els = page.$('selector');
for (let el of els) {
  let content = await (await el.getProperty('textContent')).jsonValue();
}

Тогда у вас есть ваш текст в переменной «content».

Вы можете использоватьpage.$$(selector) чтобы получить все ваши целевые элементы, а затем использоватьpage.evaluate() чтобы получить содержание (innerHTML), затем примените ваши критерии. Это должно выглядеть примерно так:

const targetEls = await page.$('yourFancySelector');
for(let target of targetEls){
  const iHtml = await page.evaluate(el => el.innerHTML, target); 
  if (iHtml.replace(/[^0-9]/g, '') === '5') {
    await target.click();
    break;
  }
}

)

const page = await browser.newPage();
const title = await page.evaluate(el => el.innerHTML, await page.$('h1'));
<div id="innerHTML">Hello</div>


var myInnerHtml = document.getElementById("innerHTML").innerHTML;
console.log(myInnerHtml);
 TrulyXax18 дек. 2018 г., 14:13
Несвязанный ответ
Решение Вопроса

Вот как я получаю innerHTML:

page.$eval(selector, (element) => {
  return element.innerHTML
})
 Gaurav Fotedar13 июл. 2018 г., 20:34
Я делаю это и консольный журнал element.innerHTML, и он печатает Promise {<pending>}. Даже если элементы были отображены в браузере (без заголовка false). У вас есть идеи, почему это может происходить?

как показано ниже. (не нужно ждать предложения в последней части)const center = await page.$eval('h2.font-34.uppercase > strong', e => e.innerHTML);

«Или даже лучше; как щелкнуть элемент с определенным innerHTML.»

Есть некоторыесведения вокруг innerHTML, innerText и textContent, которые могут вас расстроить. Что вы можете обойти, используя достаточно свободный запрос XPath сКукловод v1.1.1.

Что-то вроде этого:

const el = await page.$x('//*[text()[contains(., "search-text-here")]]');
await el[0].click({     
                button: 'left',
                clickCount: 1,
                delay: 50
            });

Просто помните, что вы получите массив ElementHandles обратно из этого запроса. Итак ... конкретный элемент, который вы ищете, может не быть в [0], если ваш текст не уникален.

Параметры переданные в .click () не нужны, если все, что вам нужно, это один щелчок левой кнопкой мыши.

Ваш ответ на вопрос