嗨,我希望能够单击系统工具,然后单击固件升级按钮,但是当我使用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();
};
答案 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!
});