Перейти к содержимому

Практикум по тест-дизайну 2.0
онлайн, начало 29 ноября
Тестирование REST API
онлайн, начало 18 ноября
Автоматизатор мобильных приложений
онлайн, начало 27 ноября
Selenium WebDriver: полное руководство
онлайн, начало 15 ноября
Фотография

Поиск элемента по совпадению с содержимым атрибута.

selenium python

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Blern

Blern

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Игорь Пигорь

Отправлено 02 Октябрь 2019 - 18:19

Здравствуйте.

 

Selenium python
 

Нужно найти элемент по атрибуту. Вот такой атрибут с таким содержимым - 

data-sel="{"sn":"Меньше 1.5","mn":"Тотал голов","ewc":"1/1 1","cid":40075343527,"prt":"CP","ewf":"1.0","epr":"1.6800000000000002","prices":{"0":"17/25","1":"1.68","2":"-147","3":"0.68","4":"0.68","5":"-1.47"}}"

Ладно найти его просто, я использую поиск по css селектору.
 

.find_element_by_css_selector('[data-sel*="Меньше 1.5"]')

Даже разобрался как найти два-три-четыре вхождения в содержимое атрибута. Выглядит так.
 

.find_element_by_css_selector('[data-sel*="Меньше 3.5"]' '[data-sel*="Тотал голов"]') 

А теперь вопрос, как в это все добавить слово-исключение, слово, которое если есть в значении атрибута, то этот элемент игнорируется?


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 638 сообщений


Отправлено 03 Октябрь 2019 - 07:08

Самое тупое - возьмите все такие элементы (селектор первый) и циклом проверьте на содержание нужной подстрочки в атрибуте data-sel элемента, ну и сформируете другой лист, уже отфильтрованный.


  • 0

#3 Blern

Blern

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Игорь Пигорь

Отправлено 03 Октябрь 2019 - 11:22

Самое тупое - возьмите все такие элементы (селектор первый) и циклом проверьте на содержание нужной подстрочки в атрибуте data-sel элемента, ну и сформируете другой лист, уже отфильтрованный.

В общем-то так и сделал. Поиск элементов находит 1-5 подходящих элементов, а потом в этом списке с помощью цикла нахожу элемент, который не содержит слов-исключений. Но это тоже занимает некоторое время. Интересно, есть ли способ сделать это в один подход.


  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 03 Октябрь 2019 - 18:05

В xpath есть неравенство != и отрицание not() . В css есть :not. У вас получится что-то вроде:

:not([data-sel="слово-исключение"])

  • 1

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#5 Blern

Blern

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Игорь Пигорь

Отправлено 04 Октябрь 2019 - 18:21

 

В xpath есть неравенство != и отрицание not() . В css есть :not. У вас получится что-то вроде:

:not([data-sel="слово-исключение"])

А такой вариант не предполагает полное совпадение содержимого атрибута со словом-исключением?


  • 0

#6 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 04 Октябрь 2019 - 18:49

 

 

В xpath есть неравенство != и отрицание not() . В css есть :not. У вас получится что-то вроде:

:not([data-sel="слово-исключение"])

А такой вариант не предполагает полное совпадение содержимого атрибута со словом-исключением?

 

Предполагает. Ну так я же написал "что-то вроде". Дальше вы сами. Если у вас несколько значений в атрибуте, тогда:

:not([data-sel*="слово-исключение"])

  • 0

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#7 Blern

Blern

    Новый участник

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Игорь Пигорь

Отправлено 06 Октябрь 2019 - 08:31

 

В xpath есть неравенство != и отрицание not() . В css есть :not. У вас получится что-то вроде:

:not([data-sel*="слово-исключение"])

Наверно это уже будет глупо, но можно это как-то поместить в одну строку с поиском без исключения и с ним одновременно?)


  • 0

#8 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 06 Октябрь 2019 - 18:03

 

 

В xpath есть неравенство != и отрицание not() . В css есть :not. У вас получится что-то вроде:

:not([data-sel*="слово-исключение"])

Наверно это уже будет глупо, но можно это как-то поместить в одну строку с поиском без исключения и с ним одновременно?)

 

Одновременно можно так

[data-sel*="слово"]:not([data-sel*="исключение"])

  • 1

http://starbugss.blogspot.ru - "Звездные баги", мой блог.



Selenium 2.0: стартовый уровень
онлайн
Программирование на Java для тестировщиков
онлайн
Автоматизация функционального тестирования
онлайн
Selenium WebDriver: полное руководство
онлайн




Темы с аналогичным тегами selenium, python

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале