Javascript 使用木偶演员输入
所以我一直在尝试与木偶演员合作,老实说,这很麻烦,但我决心更好地了解它 因此,我尝试使用Page.Type()函数,但在查找输入或。。。我认为可能是我的网速太慢,找不到选择器造成了这个问题 但我原以为Javascript 使用木偶演员输入,javascript,xpath,puppeteer,Javascript,Xpath,Puppeteer,所以我一直在尝试与木偶演员合作,老实说,这很麻烦,但我决心更好地了解它 因此,我尝试使用Page.Type()函数,但在查找输入或。。。我认为可能是我的网速太慢,找不到选择器造成了这个问题 但我原以为 wait instagram.page.waitForNavigation({waitUntil:'networkidle2'}) 本来可以解决这个问题的,也许我做错了什么,我不确定 以下是文件: main.js- const insta = require('./instagram'); (
wait instagram.page.waitForNavigation({waitUntil:'networkidle2'})代码>
本来可以解决这个问题的,也许我做错了什么,我不确定
以下是文件:
main.js-
const insta = require('./instagram');
(async () => {
await insta.initialize();
await insta.login('user', 'password');
debugger;
})()
instagram.js-
const puppeteer = require('puppeteer');
const BASE_URL = 'https://instagram.com/';
const instagram = {
browser: null,
page: null,
initialize: async () => {
instagram.browser = await puppeteer.launch({
headless: false
});
instagram.page = await instagram.browser.newPage();
},
login: async (username, password) => {
await instagram.page.goto(BASE_URL, { waitUntil: 'networkidle2' });
let loginButton = await instagram.page.$x('//*[@id="loginForm"]/div/div[3]/button')
await loginButton[0].click();
await instagram.page.waitForNavigation({ waitUntil: 'networkidle2' });
await instagram.page.waitFor(1000);
await instagram.page.type('input[name="username"]', username, { delay: 500 });
await instagram.page.type('input[name="password"]', password, { delay: 500 });
debugger;
}
}
module.exports = instagram;
您的登录:
函数应如下所示:
login: async (username, password) => {
await instagram.page.goto(BASE_URL, { waitUntil: 'networkidle2' });
await instagram.page.waitForNavigation({ waitUntil: 'networkidle2' });
await instagram.page.waitFor(1000);
await instagram.page.type('input[name="username"]', username, { delay: 500 });
await instagram.page.type('input[name="password"]', password, { delay: 500 });
const loginButton = await instagram.page.$x('//*[@id="loginForm"]/div/div[3]/button');
await Promise.all([
this.page.waitForNavigation(),
loginButton[0].click();
]);
debugger;
}
在填写输入之前,您正在单击登录按钮。另外,我所展示的Promise.all
块是点击导航到新URL的按钮的推荐方式。您引用了一个神秘的“问题”。你说的这个“问题”是什么?请详细解释一下。透露它的秘密。所以你试着先点击“登录”按钮,然后填写用户名和登录字段?试着用{headless:false}
启动木偶演员,这不会是一个麻烦;)好的,谢谢你的回答,但是我仍然有一个问题,输入字段中没有填写任何信息。那么问题仍然是一样的,那会是什么呢?@Blue您是否已经通过了登录
功能代码并评估了用户名和密码变量?还是将它们记录到控制台?你已经试过什么了?不,我没有试过。我假设我能够看到它输入到字段中,如果我尝试其他选择器,我不知道为什么该选择器不起作用。