Хобрук: Ваш путь к мастерству в программировании

Как обрабатывать переменный xpath элемента (xpath сохраняет изменения) в selenium webdriver

Я пытаюсь найти элемент управления Ajax (наведите указатель мыши) на домашней странице Amazon для входа.

WebElement element = driver.findElement(By.xpath("//*[@id='nav-link-yourAccount']"));

однако этот локатор элементов работает некоторое время, а в других случаях он не находит элемент, и скрипт дает сбой.

Я заметил, что Xpath этого элемента иногда меняется на //*[@id='nav-link-yourAccount']/span[1], нет другого уникального идентификатора, который можно использовать для поиска этого элемента.

Не могли бы вы сообщить мне, как решить эту проблему с переменным xpath.


  • Если вы пытаетесь найти элемент по идентификатору, почему бы не использовать By.id()? 21.10.2016
  • @JLRishe сказал правильно. попробуйте один раз с этим. все еще проблема воспроизводится, затем поделитесь своим html-кодом 21.10.2016

Ответы:


1

Если вам не удалось найти элемент по одному из значений xpath, попробуйте выполнить поиск по другому значению xpath. Вы можете использовать ExpectedConditions для ожидания существования элемента в течение определенного периода времени. Если это время истекло, а элемент не найден, используйте второй локатор, чтобы найти элемент. Это предполагает, что xpath изменяется только между этими двумя известными значениями. Кроме того, как только вы найдете элемент, вы можете захотеть сделать некоторые утверждения о других свойствах элемента, чтобы убедиться, что вы нашли искомый элемент. Вот сообщение об ожидании элемента:

Эквивалент waitForVisible/waitForElementPresent в тестах Selenium WebDriver с использованием Java?

21.10.2016
Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..