Как справиться с кукловодом на HTML-тегах, у которых нет идентификатора, проблема с несколькими и скрытыми классами - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь автоматизировать вход в систему и очистить некоторые данные, HTML-теги на веб-странице не имеют только идентификаторы классов.Почему-то в первый раз я могу сосредоточиться на вводе и ввести свой адрес электронной почты, но с подобным кодом он не будет вводить пароль, и я не могу понять, почему?

Я пытался

await page.waitForSelector('.login__form-wrap > .form > div:nth-child(1) > .form-group > .form-control')
await page.click('.login__form-wrap > .form > div:nth-child(1) > .form-group > .form-control')
await page.keyboard.type('myemailaddress', {delay: 100});

и работает на электронную почту.Тогда подобный код для пароля не работает:

await page.waitForSelector('.login__form-wrap > .form > div:nth-child(2) > .form-group > .form-control');
await page.click('.login__form-wrap > .form > div:nth-child(2) > .form-group > .form-control');
await page.keyboard.type('mypassword', {delay: 100});

Также пробовал так:

await page.waitForSelector('input[name=email]');
await page.focus('input[name=email]');
await page.keyboard.type('myemailaddress', {delay: 100});

снова работает, но делает то же самое для пароля:

await page.waitForSelector('input[name=password]');
await page.focus('input[name=password]');
await page.keyboard.type('myemail', {delay: 100});

не работает ...

Не работает означает, что пароль не введен в поле ввода.

Другое решение, которое я попробовал, было:

await page.$eval('input[name=password]', el => el.value = "mypassword");

Этоработает (проход был показан), но, нажав на кнопку входа, он сказал неверный пароль, и когда я набрал его вручную, тот же пароль был верным, и страница регистрирует меня.

Так что, если кто-то может указать мне правильное направлениеделать это, или как справиться с этим и показать мне, что я делаю неправильно, я был бы очень благодарен.

Ps, если вы хотите поиграть с ним, страница, на которой я пытаюсь войти, это здесь Я уже прошел проверку и полный код здесь

...