javascript - 无法使用 puppeteer 按 ID 找到元素

标签 javascript dom puppeteer

<分区>

我的代码中有以下元素:

<div class="MuiButtonBase-root MuiListItem-root MuiListItem-gutters MuiListItem-button" tabindex="0" role="button" aria-disabled="false" id="1"><div class="MuiListItemText-root"><span class="MuiTypography-root MuiListItemText-primary MuiTypography-body1">Arne Nordman (arne@nordman.no)</span></div><span class="MuiTouchRipple-root"></span></div>

此元素是在文本字段中键入内容后出现的下拉列表的一部分。不幸的是,当我使用下面的代码时,无法识别该元素。它说“DOMException:无法在‘Document’上执行‘querySelector’:‘#1’不是有效的选择器”。

这是我的代码:

const puppeteer = require("puppeteer");

async function run() {
  const browser = await puppeteer.launch({ headless: false });
  const page = await browser.newPage();

  await page.goto("http://localhost:3000/");

  await page.evaluate(() =>
    [...document.querySelectorAll("button")].map(
      elem => elem.innerText === "Personell & Institutions" && elem.click()
    )
  );

  await page.type("input", "arne");
  await page.waitFor(1000);
  await page.$eval("#1", el => console.log("elemnet is:", el.innerText));
}

run();

任何帮助将不胜感激!

最佳答案

您可以在选择器中引用“1”:

await page.$eval("#\\31", el => console.log("elemnet is:", el.innerText));

拥有不是标识符的 id 值是可以的,但是您会遇到您所看到的 CSS 语法问题。

关于javascript - 无法使用 puppeteer 按 ID 找到元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59033666/

相关文章:

javascript - 从框架内读取父位置(不同域)

node.js - puppeteer 师 : set a dropdown option as selected based on text in an external function

java - 比较三个整数值

javascript - 在选择菜单中添加 optgroup

javascript - d3 x 轴对于散点图内容来说太短

javascript - 无法从 Firefox 上的提交按钮中删除虚线边框

javascript - 我是否正确地使用 JavaScript 更改了页面?

javascript - Panel.Visible=false 不添加到 DOM 中吗?

javascript - 如何使用 Puppeteer 选择并输入具有动态生成属性的输入字段?

javascript - 循环内的“page.evaluate()”(在 Puppeteer 中)返回相同的值