Нужна помощь по скрытым элементам selenium

#selenium #login #popup #frame

#selenium #аутентификация #всплывающее окно #фрейм

Вопрос:

Я пытаюсь использовать selenium для автоматического входа на следующий веб-сайт: вот ссылка https://www.theice.com /

После того, как я нажимаю на вход, появляется экран входа в систему — я не знаю, что это: рамка, панель…

Мне не удалось определить, какие элементы, свойства имеет этот экран через selenium. Таким образом, я не могу заполнить необходимую информацию через selenium.

Кто-нибудь может пролить свет на это?

Комментарии:

1. Круто, так что вы пробовали? Страница кажется довольно простой AJAX. Ничего особенного, никаких фреймов, никаких всплывающих окон.

Ответ №1:

Здесь SiKing правильный. Ничего особенного не происходит с ДОМОМ. Используйте свой любимый инспектор DOM и изучите элементы, и вы должны быть в состоянии идентифицировать локаторы.

В этом случае, похоже, что разработчики интерфейса были тщательными и предоставили теги идентификаторов основных элементов. Как только вы сможете установить связь между элементом и его идентификатором, вам просто нужно будет закодировать команды selenium для взаимодействия с ними.

Хотя для этого есть ряд хороших инструментов, я хотел бы порекомендовать дополнения FireBug и FirePath для Firefox. Аналогично инспектору Chrome, наведение курсора мыши на элемент DOM в инспекторе выделит сам элемент на странице. FirePath может помочь с селекторами CSS и XPath, если это необходимо.

Не зная вашего метода разработки (code by hand или SeleniumIDE) или выбранного вами языка, я бы просто рекомендовал прочитать документы Selenium по адресуhttp://docs.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver-api-commands-and-operations чтобы получить представление о средствах, с помощью которых элементы могут быть идентифицированы и впоследствии использованы.

Кстати, этот сайт является примером хорошего дизайна интерфейса (по крайней мере, при беглом взгляде). Поиск элементов, как только вы ознакомитесь с концепциями, должен быть относительно простым. Поиграйте с этим, лучший способ научиться — это делать (вот почему я не просто дал вам решение), вы его получите.

Желаю удачи.

(Кроме того, я не имел в виду это сообщение как «разговор с вами». Я не знаком с вашим уровнем понимания здесь, поэтому я только начинаю с основ).

Редактировать: после написания моего первоначального ответа мне пришло в голову, что вы можете столкнуться с проблемой отображения модального. После нажатия ссылки «войти» вы можете добавить ожидание в свой тест, чтобы обеспечить достаточное время для появления модального элемента перед взаимодействием с его элементами. Здесь может сработать простой Thread.sleep(), но я ненавижу рекомендовать это, если это не крайняя мера (мы все знаем, что sleeps отстой, но иногда это просто необходимо сделать)… Вместо этого ознакомьтесь с классом WebDriverWait (предполагая Java) и классом ExpectedConditions. Вы могли бы передать локатор для корневого модального элемента или его дочернего элемента в wait.until(ожидаемые условия.visibilityOfElementLocated(By.id («yourLocator»)); который будет ждать, пока не будет выполнено условие (или не наступит тайм-аут), а не Thread.sleep(), делая жесткую паузу и, возможно, ожидая неоправданно долгое время. Дело в том, что, поскольку модальное отображение не является мгновенным, WebDriver может захлебнуться, если попытается взаимодействовать с элементом, который еще не появился. Использование ожидания устранит эту проблему.