Механизировать не могу найти форму - PullRequest
0 голосов
/ 19 ноября 2018

У меня возникли проблемы с доступом к элементу формы на странице, которую я использую Mechanize.

username_page = agent.get 'https://member.carefirst.com/mos/#/home'
username_form = username_page.form_with(name: 'soloLoginForm')

username_form - это nil.(username_page действительно имеет страницу).Страница определенно имеет форму, и поле имеет вид #soloLoginForm, но username_page.body не имеет элемента формы.

Я предполагаю, что это какая-то асинхронная или динамическая проблема.Я могу взять форму с помощью poltergeist, и я пытаюсь заполнить все формы с помощью capybara / poltergeist, но мне интересно, есть ли что-то простое, что мне не хватает, что позволило бы мне использовать механизацию, так как я быпланируется.

Ответы [ 2 ]

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

Как указано в ответе @hernanvicente, страница использует Angular и требует JS (который не поддерживает механизация). Тем не менее, вы действительно хотите использовать селен с Chrome без головы, а не с Poltergeist в наши дни. Poltergeist эквивалентен примерно 7-летней версии Safari (из-за PhantomJS, которую он использует для рендеринга, будучи заброшенной), поэтому он не поддерживает много JS и CSS, используемых на современных сайтах. Еще одним преимуществом использования Selenium с Chrome является то, что вы можете легко переключаться между головой и головой, чтобы посмотреть, что происходит, когда вам нужно отладить что-либо.

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

Кажется, что 'https://member.carefirst.com/mos/#/home' использует Angular для визуализации элементов страницы, а AngularJS требует поддержки Javascript в браузере или в вашем случае Capybara нужен драйвер с поддержкой Javascript.

Механизировать не поддерживает Javascript, проверьте этот старый SO поток . Это, вероятно, причина, почему это работает, когда вы пытаетесь с poltergeist.

Проверка: https://github.com/teamcapybara/capybara#drivers

...