Различный идентификатор элемента в другом экземпляре браузера (python-selenium-chrome) - PullRequest
0 голосов
/ 11 июня 2019

Я обнаружил элементы для селена через функцию проверки моего браузера (chrome), и у меня никогда не было проблем. Теперь у меня был случай, когда локализованный элемент не был найден, и я выяснил, что в моем экземпляре селен-хрома у элемента есть другой идентификатор, чем в моем «обычном», и поэтому я не могу его найти.

Это касается и некоторых других элементов, и я не могу определить шаблон. В режиме Chrome "Ikognito" я получаю те же значения, что и в моем обычном браузере, и идентификаторы, которые получает мой браузер селена, одинаковы при каждом запуске программы.

У кого-нибудь есть объяснение этому? Является ли это обычной практикой для веб-разработчиков и как решить эту проблему в будущих проектах?

Всегда ли мне сначала запускать свой браузер селена, а затем извлекать идентификаторы элементов оттуда?

1 Ответ

0 голосов
/ 11 июня 2019

Несмотря на то, что расположение элементов по id является предпочтительным способом, это не единственный способ, который намного больше вариантов , например:

Последний - XPath - самый мощный, так как он почти язык программирования.В отличие от других стратегий выбора, селекторы XPath полностью осведомлены о странице DOM, могут искать все атрибуты, текст, родительские / дочерние объекты, перемещаться по осям , и, если этого недостаточно, вы можете перейти к функциям и операторам для точного выбора необходимого элемента.

Что касается динамических идентификаторов - это довольно распространенная практика, когда страница не является детерминированной, а содержимое динамическим.Теоретически вы можете попросить разработчиков вашего приложения придумать пользовательский атрибут HTML , который будет использоваться для автоматизации и, возможно, отслеживание пользователей , но если по какой-то причине это невозможно - вы будетедолжны определить другой способ определения местоположения элемента.s

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