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

Техники локализации плавающих дефектов
онлайн, начало 17 августа
Школа для начинающих тестировщиков
онлайн, начало 20 августа
Программирование на Python для тестировщиков
онлайн, начало 14 августа
Тестирование без требований
онлайн, начало 17 августа
Фотография

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

selenium python

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

#1 Blern

Blern

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

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

Отправлено 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
  • 767 сообщений


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

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


  • 0

#3 Blern

Blern

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

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

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

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

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


  • 0

#4 Snap

Snap

    Специалист

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


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

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

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

  • 1

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


#5 Blern

Blern

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

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

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

 

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

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

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


  • 0

#6 Snap

Snap

    Специалист

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


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

 

 

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

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

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

 

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

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

  • 0

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


#7 Blern

Blern

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

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

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

 

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

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

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


  • 0

#8 Snap

Snap

    Специалист

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


Отправлено 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 анонимных

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