使用puppeteer从输入标签获取选择器

问题描述

所以,我在React.js或Ember.js中有一个前端-不确定。我只是想自动化一些测试。在Chrome开发工具中查看HTML时,我看到了

<label class="MuiFormLabel-root-16 MuiInputLabel-root-5 MuiInputLabel-formControl-10 MuiInputLabel-animated-13 MuiInputLabel-outlined-15" data-shrink="false">Username</label>

这是在iframe中设置的(此问题不太重要)。我正在尝试使用puppeteer函数获取ElementHandler

frame.$(selector)

如何获得选择器

用户名

我尝试了一些尝试,但收效甚微。

解决方法

如果我理解正确,则需要根据其文本内容查找元素。如果是这样,则至少有两种方式:

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch(); // { headless: false,defaultViewport: null,args: ['--lang=en'] }
    const [page] = await browser.pages();

    await page.goto('https://example.org/');

    const element1 = await page.evaluateHandle(() => {
      return [...document.querySelectorAll('h1')].find(h1 => h1.innerText === 'Example Domain');
    });
    console.log(await (await element1.getProperty('outerHTML')).jsonValue());

    const [element2] = await page.$x('//h1[text()="Example Domain"]');
    console.log(await (await element2.getProperty('outerHTML')).jsonValue());

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

我的解决方案是将HTML数据属性放在前端代码中,以便我可以轻松地选择它们。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...