我如何使用(Apify's Puppeteer)单击没有ID的按钮?

时间:2018-11-06 03:09:15

标签: button puppeteer clickable id apify

我正在使用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。对于如何找到此登录按钮的可单击元素或任何其他方法,将提供任何帮助,将不胜感激。

2 个答案:

答案 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