最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

waitFor()找不到页面上显示的元素

IT培训 admin 13浏览 0评论

waitFor()找不到页面上显示的元素

我正在尝试在操纵up的人上运行我的第一个代码。

Puppeteer v1.20.0

节点v8.11.3

Npm v5.6.0

这是一个基本示例,但无效:

const puppeteer = require('puppeteer');

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

  await page.goto('', { waitUntil: 'networkidle0' });

  console.log(0);
  await page.waitFor('#username');
  console.log(1);

  await browser.close();
});

[当我运行脚本时,启动铬,可以看到Linkedin登录页面,其中包含表单和#username表单的字段,但puppeteer找不到该字段。它显示0但从不显示1,然后运行TimeoutError: waiting for selector "#username" failed: timeout 30000ms exceeded

增加超时不会改变任何东西,如果我检查铬制控制台,则该字段在那里。

Linkedin登录页面用作SPA,但我不知道在这里使用的方式是否正确。

谢谢你。

回答如下:

用户名输入位于iframe内部,您不能像这样访问它,您需要先访问iframe

    await page.goto('https://www.linkedin/learning/login');
    await page.waitForSelector('.authentication-iframe');

    var frames = await page.frames();
    var myframe = frames.find(
        f =>
            f.url().indexOf("uas/login") > 0);

    let username = '[email protected]';
    const usernamefild = await myframe.$("#username");
    await usernamefild.type(username, {delay: 10});

waitFor()找不到页面上显示的元素

我正在尝试在操纵up的人上运行我的第一个代码。

Puppeteer v1.20.0

节点v8.11.3

Npm v5.6.0

这是一个基本示例,但无效:

const puppeteer = require('puppeteer');

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

  await page.goto('', { waitUntil: 'networkidle0' });

  console.log(0);
  await page.waitFor('#username');
  console.log(1);

  await browser.close();
});

[当我运行脚本时,启动铬,可以看到Linkedin登录页面,其中包含表单和#username表单的字段,但puppeteer找不到该字段。它显示0但从不显示1,然后运行TimeoutError: waiting for selector "#username" failed: timeout 30000ms exceeded

增加超时不会改变任何东西,如果我检查铬制控制台,则该字段在那里。

Linkedin登录页面用作SPA,但我不知道在这里使用的方式是否正确。

谢谢你。

回答如下:

用户名输入位于iframe内部,您不能像这样访问它,您需要先访问iframe

    await page.goto('https://www.linkedin/learning/login');
    await page.waitForSelector('.authentication-iframe');

    var frames = await page.frames();
    var myframe = frames.find(
        f =>
            f.url().indexOf("uas/login") > 0);

    let username = '[email protected]';
    const usernamefild = await myframe.$("#username");
    await usernamefild.type(username, {delay: 10});
发布评论

评论列表 (0)

  1. 暂无评论