Веб-драйвер Selenium заблокирован на starbucks.com?

Я пытаюсь создать свой собственный менеджер паролей. Текущий сайт, который я создаю, - это starbucks.com.

Я взаимодействую с веб-сайтами с помощью C # и Selenium webdriver, в частности chromedriver.exe.

Страница входа (на https://www.starbucks.com/account/signin), принимает хорошие учетные данные, но затем выгружает меня на домашнюю страницу без входа в систему, если страница запускается с помощью chromedriver. Ничто из того, что я делаю на странице, не влияет на это. Новое окно браузера вручную работает нормально, но версия с хромированным драйвером блокируется, даже если нет взаимодействия со страницей, и я ввожу данные и нажимаю кнопку вручную.

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

Я думаю, что эту блокировку выполняет сервис под названием Optimizely. Это может быть не связано, но я нашел этот флаг на их веб-сайте, и он не влияет на проблему. Флаг выглядит так: https://www.starbucks.com/account/signin?optimizely_opt_out=true

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

Кто-нибудь знает, как может работать это обнаружение webdriver? Есть ли способ обойти это обнаружение? Я думаю, что это делается где-то в javascipt.


person Chris Sawyer    schedule 20.03.2016    source источник
comment
Интересно! Обратите внимание, что селен может быть обнаружен: stackoverflow.com/questions/33225947/.   -  person alecxe    schedule 20.03.2016


Ответы (1)


Просматривая HTML-код страницы, можно увидеть несколько огромных функций JavaScript

Вы пытаетесь изменить страницу до того, как она загрузится. Вам нужно будет добавить код, чтобы дождаться:

  • "jQuery.active == 0"
  • Any loading spinner to be not displayed
  • document.readyState == 'complete'

У меня есть cucumber-jvm, selenium webdriver, настройка проекта шаблона JUnit на GitHub, который реализует все это (вам нужно будет настроить счетчик загрузки в соответствии с вашим приложением). Он общедоступен, и вы можете найти его здесь.

Осмотритесь и посмотрите, поможет ли это.

person MikeJRamsey56    schedule 20.03.2016
comment
Учетная запись GitHub бесплатна. Просто создайте учетную запись, если у вас ее нет. - person MikeJRamsey56; 20.03.2016