Node.js 如何用木偶演员在iframe中填写表格
嗯,我已经在堆栈溢出中研究并发现了一个类似的问题,但我不理解它,因此我做错了,它不起作用,我有以下脚本:Node.js 如何用木偶演员在iframe中填写表格,node.js,puppeteer,Node.js,Puppeteer,嗯,我已经在堆栈溢出中研究并发现了一个类似的问题,但我不理解它,因此我做错了,它不起作用,我有以下脚本: const puppeteer = require('puppeteer'); const fs = require('fs').promises; (async ()
const puppeteer = require('puppeteer');
const fs = require('fs').promises;
(async () => {
console.log("Iniciado!")
const browser = await
puppeteer.launch({
executablePath: '/usr/bin/chromium',
headlesss:false,
});
const page = await
browser.newPage();
await page.setViewport({ width: 1920, height: 1080 }); await
page.setRequestInterceptiontrue);
page.on('request', (req) => {
if(req.resourceType() === 'image' || req.resourceType() === 'stylesheet' || req.resourceType() === 'font'){
req.abort();
}
else {
req.continue();
}
});
await page.goto('https://www.nike.com.br/chuteira-nike-premier-2-sala-unissex-153-169-171-309321', { waitUntil: 'load',timeout:0});
await page.waitForXPath('//label[@for="tamanho__idM40F395"]',{visibility:true, timeout:0});
const tamanho = await page.$x('//label[@for="tamanho__idM40F395"]')
await tamanho[0].click('//label[@for="tamanho__idM40F395"]');
await page.waitForSelector('button#anchor-acessar-unite-oauth2')
await page.click('button#anchor-acessar-unite-oauth2')
})();
运行此脚本,它将选择运动鞋尺寸并单击登录按钮,但是如果它在iframe中,我如何填写表单?我需要能够填写表格
注:
我删除了图像和css加载,以便更快地加载页面。您尝试过木偶类型api吗?从我所看到的,您的电子邮件和pw字段是带有ID的输入字段。尝试此等待页面。键入'88650c48-8f4f-48b7-9ce3-48087cacfd1c','my_email'与密码字段相同。您只需找到iframe元素,获取其框架并使用它而不是页面: const iframe=等待页面。waitForSelector'iframenike-unite-oauth2-iframe' const frame=等待iframe.contentFrame 等待帧。键入'input[name=emailAddress]','foo@bar.com' 等待帧。键入'input[name=password],'123' 等待帧。单击“输入[value=ENTRAR]”
这不应该是个问题。我试着点击输入,然后插入一些文本,但没有效果,测试你的示例没有效果,因为输入的id是动态的,输入的名称不再是动态的,如何使用name属性填写?我在堆栈溢出中发现了一个类似的问题,但我不明白-你能提供一个链接吗?也许我们可以帮助您理解它,这提供了有用的上下文。