Как мне нажать кнопку, у которой нет идентификатора, используя (Apify's) Puppeteer? - PullRequest
0 голосов
/ 06 ноября 2018

Я использую Кукольник Апифы , чтобы войти на этот сайт . Я исследовал подобные вопросы, но безрезультатно.

У меня проблемы с поиском активируемого идентификатора / элемента для основной кнопки входа в систему, которая отображается на связанной странице входа в систему . В настоящее время мой код выглядит так:

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.');

С идентификатором entryform я получаю следующую ошибку: Node is either not visible or not an HTMLElement

С идентификатором loginP я получаю следующую ошибку: No node found for selector

Я использовал XPath, чтобы найти их, он не предлагал других идентификаторов использования. Любая помощь будет с благодарностью о том, как найти кликабельный элемент для этой кнопки входа или любого другого метода.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы должны попробовать другой селектор. Я попытался 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.');
});
0 голосов
/ 06 ноября 2018

Во время моего теста формы входа в систему на рабочем столе можно было найти кнопку «ВХОД» с помощью этого селектора:

button[name=btnLogin].btn-large
...