无法在 Puppeteer 上查询选择器(类型错误:selector.startsWith 不是函数)

编程入门 行业动态 更新时间:2024-10-07 14:30:19

无法在 Puppeteer 上查询选择器(类型错误:selector.startsWith 不是<a href=https://www.elefans.com/category/jswz/34/1771370.html style=函数)"/>

无法在 Puppeteer 上查询选择器(类型错误:selector.startsWith 不是函数)

我安装了 Puppeteer 并想查询一个选择器来处理它。 但是我遇到了

TypeError: selector.startsWith is not a function
错误。

我试图通过添加

toString()
更改核心代码来修复它,但它没有用。

这是我试过的两种表达方式:

await page.$eval('#firstName', elem => elem.click());
await page.waitForSelector('#firstName');

两者均无效并产生相同的错误。

我还尝试安装旧的 puppeteer 和 node 版本,但仍然相同。 我该如何解决这个问题?

所有错误日志信息为:

file:///C:/Users/User/Desktop/mail/node_modules/puppeteer-core/lib/esm/puppeteer/common/GetQueryHandler.js:51
                if (selector.startsWith(prefix)) {
                             ^

TypeError: selector.startsWith is not a function
    at getQueryHandlerAndSelector (file:///C:/Users/User/Desktop/mail/node_modules/puppeteer-core/lib/esm/puppeteer/common/GetQueryHandler.js:51:30)
    at CDPElementHandle.$ (file:///C:/Users/User/Desktop/mail/node_modules/puppeteer-core/lib/esm/puppeteer/common/ElementHandle.js:74:51)
    at IsolatedWorld.$ (file:///C:/Users/User/Desktop/mail/node_modules/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.js:126:25)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async IsolatedWorld.focus (file:///C:/Users/User/Desktop/mail/node_modules/puppeteer-core/lib/esm/puppeteer/common/IsolatedWorld.js:186:24)
    at async file:///C:/Users/User/Desktop/mail/index.js:17:5

我产生相同错误的完整代码示例是:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({headless: false});
  const context = await browser.createIncognitoBrowserContext();
  if (context) {
    const page = await browser.newPage();

    await page.goto(';cc=TR&dsh=S-519439412%3A1682412535258329&flowEntry=SignUp');
  
    // Set screen size
    await page.setViewport({width: 1080, height: 1024});
    //await page.$eval('#firstName', elem => elem.click());
    const username = await page.waitForSelector('#firstName');
    await page.focus(username)
    await page.keyboard.type('test54')
  }

})();
回答如下:

您需要单击选择器

#firstName
所以只需更改

await page.focus(username);

await username.click();

这将解决错误,如果你想使用隐身,那么

const page = await browser.newPage();

应该是

const page = await context.newPage();

更多推荐

无法在 Puppeteer 上查询选择器(类型错误:selector.startsWith 不是函数)

本文发布于:2024-05-30 09:15:48,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1770338.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:函数   错误   类型   选择器   Puppeteer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!