Нажмите на кнопку «onclick» -login-button, используя Puppeteer - PullRequest
0 голосов
/ 10 марта 2020

Я испытываю трудности с использованием Puppeteer для автоматизации входа в систему для веб-сайта, который использует сценарий "onclick" для отображения своего окна входа в систему. Ссылка для входа выглядит следующим образом:

<li>
   <a href="#" onclick='openJqueryDialog("D_Login"); return false;' style="padding-right:0;">Login</a>
   <span class="blu">oder</span>
   <a href="/de/registrierung" onclick="addGTMEvent('Homepage', 'Clicks - Register')">Registrieren</a>
</li>

К сожалению, на странице отсутствует приглашение к входу в систему, позволяющее обращаться к полям входа в систему по его идентификатору, как показано во многих примерах кукловодов. Существует только возможность войти в систему, используя это всплывающее окно. Я пробовал много разных подходов, чтобы открыть это приглашение, как:

(await page.$$eval(selector, a => a.filter(a => a.textContent === 'Login')))[0].click();

или

let selector = 'a';
         page.$$eval(selector, anchors => {
             anchors.map(anchor => {
                 if(anchor.textContent == 'Login') {
                     anchor.click();
                     return
                 }
                 })
         });

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

await page.screenshot({ path: screenshot2 });

Я также попытался использовать его x-path с помощью page. $ X (). К сожалению, ничего из этого не сработало. Снимок экрана, который я сделал сразу после действия, дал тот же результат на странице, что и перед намеченным кликом. Я ожидаю увидеть окно входа в систему на скриншоте. Может быть, функция скриншота не показывает это окно, даже если бы оно было видимым?

Есть ли способ увидеть браузер в действии, пока выполняется сценарий кукловода? Я провел несколько экспериментов, используя

const browser = await puppeteer.launch({ headless:false });

Но это окно браузера не показывалось. Так что в настоящее время у меня есть только скриншоты в качестве возвращаемого значения.

К сожалению, я не слишком знаком с JavaScript ...

Как мне добиться, чтобы щелкнуть эту ссылку?

1 Ответ

0 голосов
/ 12 марта 2020

Я нашел лучший способ: Селен + python. Работает сразу. Потрясающие функции отладки. Поддерживает также Firefox. Более простой синтаксис. Меньше Brainfuck.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...