我正在使用Apify's puppeteer登录到this website。我确实研究了类似的问题,但无济于事。
我无法找到linked login page上显示的登录主按钮的可点击ID /元素。目前,我的代码如下:
const Apify = require('apify');
Apify.main(async () => {
const input = await Apify.getValue('INPUT');
const browser = await Apify.launchPuppeteer();
const page = await browser.newPage();
await page.goto('https://www.sunpass.com/vector/account/home/accountLogin.do');
// Login
await page.type('#tt_username1', input.username);
await page.type('#tt_loginPassword1', input.password);
await page.waitFor(2000);
await page.click('#entryform input');
await page.waitForNavigation();
// Get cookies
const cookies = await page.cookies();
// Use cookies in other tab or browser
const page2 = await browser.newPage();
await page2.setCookie(...cookies);
await page2.goto('https://www.sunpass.com/vector/account/transactions/webtransactionSearch.do'); // Opens page as logged user
await browser.close();
console.log('Done.');
ID为entryform
的我收到以下错误:Node is either not visible or not an HTMLElement
ID为loginP
的我收到以下错误:No node found for selector
我使用XPath来定位它们,但没有提供其他使用ID。对于如何找到此登录按钮的可单击元素或任何其他方法,将提供任何帮助,将不胜感激。
答案 0 :(得分:3)
您必须尝试另一个选择器。
我尝试了button[name="btnLogin"]
,它奏效了。
经过测试的代码:
const Apify = require('apify');
Apify.main(async () => {
const input = await Apify.getValue('INPUT');
const browser = await Apify.launchPuppeteer();
const page = await browser.newPage();
await page.goto('https://www.sunpass.com/vector/account/home/accountLogin.do');
// Login
await page.type('#tt_username1', input.username);
await page.type('#tt_loginPassword1', input.password);
await page.waitFor(2000);
await page.click('button[name="btnLogin"]');
await page.waitForNavigation();
// Get cookies
const cookies = await page.cookies();
// Use cookies in other tab or browser
const page2 = await browser.newPage();
await page2.setCookie(...cookies);
await page2.goto('https://www.sunpass.com/vector/account/transactions/webtransactionSearch.do'); // Opens page as logged user
await browser.close();
console.log('Done.');
});
答案 1 :(得分:0)
在台式机上测试登录表单时,可以使用此选择器找到“登录”按钮:
button[name=btnLogin].btn-large