木偶找不到菜单单击上的选择器

时间:2018-06-22 13:13:13

标签: javascript puppeteer

enter image description here

嗨,我希望能够单击系统工具,然后单击固件升级按钮,但是当我使用ID或选择器(通过右键单击->复制选择器)时,它首先表示无法找到它。

这是我第一次使用Puppeteer,有人可以帮忙吗:)?

谢谢

const puppeteer = require('puppeteer');

let scrape = async () => {
  const browser = await puppeteer.launch({headless: false});
  const page = await browser.newPage();
  await page.setViewport({width: 1000, height: 500})
  await page.goto('http://192.168.2.107:8080/', {waitUntil: 'networkidle2'});
  await page.waitFor('input[id=pcPassword]');
  await page.$eval('input[id=pcPassword]', el => el.value = 'admin');

   page.keyboard.press('Enter')
   await page.waitFor(3000);
  await page.click(
    '[id="the Id im talking about "]'
);
  //await page.waitFor(5000);
  await browser.close();
};

2 个答案:

答案 0 :(得分:0)

从您的评论到此答案,我认为我们正在处理页面中的框架。这就是为什么伪造者尽管在页面中仍可见元素/api/test却无法找到的原因。要访问页面中的框架,请查看Puppeteer pageFrames

这是代码外观的演示。

#menu_tools

您可以使用let scrape = async () => { const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); await page.setViewport({width: 1000, height: 500}) await page.goto('http://192.168.2.107:8080/', {waitUntil: 'networkidle2'}); // Find out which frame holds your desired selector then edit the pageFrame below. const pageFrame = await page.mainFrame().childFrames[0]; await pageFrame.waitFor('input[id=pcPassword]'); await pageFrame.$eval('input[id=pcPassword]', el => el.value = 'admin'); pageFrame.keyboard.press('Enter') await pageFrame.waitFor(3000); await pageFrame.waitFor('#menu_tools') await pageFrame.click('#menu_tools'); await browser.close(); }; 在页面中找到所有可用的框架,然后连接到该框架。然后,您可以使用该框架的手柄,像平常一样对页面执行操作。

答案 1 :(得分:0)

好吧,我只需要选择框架,我不知道,

这是代码:

const puppeteer = require('puppeteer');

let scrape = async () => {
 const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless:false});
  const page = await browser.newPage();
  await page.setViewport({width: 1900, height: 700})
  await page.goto('http://192.168.2.105:8080', {waitUntil: 'networkidle2'});
  await page.waitFor('input[id=pcPassword]');
  await page.$eval('input[id=pcPassword]', el => el.value = 'admin');

   page.keyboard.press('Enter');
   await page.waitFor(3000);

 const frame = await page.frames().find(f => f.name() === 'bottomLeftFrame');
    const button = await frame.$('#menu_tools');
    button.click();
       await page.waitFor(1000);
    const button2 = await frame.$('#menu_softup');
    button2.click();
      }
scrape().then((value) => {
    console.log(value); // Success!
});