Как я могу войти на этот сайт с кукольником? - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь зайти на этот сайт https://www.extron.fr/home/login?ReturnUrl=/ с кукловодом, но это не работает. Идентификатор входов меняется каждый раз, когда я перезагружаю страницу, поэтому я не могу использовать их в качестве селектора ...

const puppeteer = require('puppeteer');
async function login() {
    const browser = await puppeteer.launch({ headless: false });
    const page = await browser.newPage();
    await page.setViewport({ width: 1200, height: 720 });
    await page.goto('https://www.extron.fr/home/login?ReturnUrl=/');
    await page.waitForNavigation();
    await page.type('.form-control email', 'test');
    await page.type('.form-control pr-5 password', 'test');
    await page.click('body > div > div > div.sign-in-window.modal--signin.shadow > form > fieldset > button');
    await page.waitForNavigation();
}
login();

Ответы [ 3 ]

0 голосов
/ 01 ноября 2019

Вы можете использовать селектор по имени тега и атрибутам, например ::

const puppeteer = require('puppeteer')

;(async () => {
    const browser = await puppeteer.launch({ headless: false, devtools: true });
    const page = (await browser.pages())[0]
    page.setDefaultNavigationTimeout(0)
    await page.setViewport({ width: 1200, height: 720 })
    await page.goto('https://www.extron.fr/home/login?ReturnUrl=/')
    await page.waitForSelector('button[type="submit"]')
    await page.type('input[type="email"]', 'your.email@address.com')
    await page.type('input[type="password"]', 'A_SecretPassword123@#$~!')
    await page.click('button[type="submit"]')
    await page.waitForSelector('alert>strong', { visible: true, timeout: 0 })
    await browser.close()
})()
0 голосов
/ 01 ноября 2019

Я пытался с этим кодом, и он работает! Спасибо за помощь, ребята

const puppeteer = require('puppeteer');
function run () {
    return new Promise(async (reject) => {
        try {
            const browser = await puppeteer.launch({ headless: false });;
            const page = await browser.newPage();
            await page.setViewport({ width: 1200, height: 720 });
            await page.goto('https://www.extron.fr/home/login?ReturnUrl=/');
            await page.type('.email', 'test')
            await page.type('.password', 'test')
            await page.keyboard.press('Enter');
        } catch (e) {
            return reject(e);
        }
    })
}
run().then(console.log).catch(console.error);
0 голосов
/ 01 ноября 2019

На самом деле ваш селектор неверен. Для имени класса .email нужна точка.

Вместо этого

.form-control email

Вам нужно это,

.form-control.email

Окончательный код должен быть таким,

await page.type('.form-control.email', 'test');
await page.type('.form-control.pr-5.password', 'test');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...