【问题标题】:How to check if an element contains a certain string in puppeteer?如何在 puppeteer 中检查元素是否包含某个字符串?
【发布时间】:2020-04-10 16:05:45
【问题描述】:

我正在尝试找出元素 #view_container > div > div > div.pwWryf.bxPAYd > div > div.WEQkZc > div > form > content > section > div > content > div.ck6P8 > div > div 是否包含特定的字符集 (•••)。我对编码很陌生,因此我们将不胜感激。

【问题讨论】:

    标签: node.js puppeteer


    【解决方案1】:

    类似这样的:

    'use strict';
    
    const puppeteer = require('puppeteer');
    
    (async function main() {
      try {
        const browser = await puppeteer.launch();
        const [page] = await browser.pages();
    
        await page.goto('https://example.org/');
    
        const stringIsIncluded = await page.evaluate(() => {
          const string = '...';
          const selector = 'p > a[href]';
          return document.querySelector(selector).innerText.includes(string);
        });
    
        console.log(stringIsIncluded);
    
        await browser.close();
      } catch (err) {
        console.error(err);
      }
    })();
    

    如果您需要检查元素的所有未标准化空格的原始文本,您可以使用.textContent 而不是.innerText

    【讨论】:

    • 如何把它变成一个 if else 函数?如果 url 包含某个字符串:执行此操作否则:转到下一行代码
    • 您可以将 `page.evaluate()` 中的 URL 转移到 puppeteer 上下文中,然后在此处使用 if - else。
    • 你能举个例子吗?抱歉,我是编码新手。
    • 你的网址是什么?这是链接的href吗?
    • 我希望它只读取 URL 的某个部分。在这种情况下:https://kith.com/throttle/queue? 但在“?”之后任何事情都可以在它之后出现,所以我只希望它读到问号
    【解决方案2】:

    看看$$eval

    page.$$eval('#view_container > div', (elements) =>
      elements.some((el) => el.textContent.includes('some text'))
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 2019-10-22
      • 2017-11-20
      • 2021-06-24
      相关资源
      最近更新 更多