Задать вопрос
@rkfddf

Как найти элемент по имени в Selenium если он различается регистром символов?

Через локатор find_element_by_partial_link_text нахожу элемент, только на разных страницах он выводится по разному - то в верхнем регистре, то в нижнем, иногда в перемешку. При этом такой локатор ничего не находит.
Как произвести поиск в таком случае и не зависить от регистра символов?
  • Вопрос задан
  • 116 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillbox
    Фулстек-разработчик
на Python
    19 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@Umpiro
Придется, видимо, получить список всех ссылок, пропустить их через regex, и затем обратиться к нужному элементу, повторно.
Ответ написан
Комментировать
rkfddf написать xpath локатор который преобразует регистр :
[
  '//a[contains(@href,"{}")]'.format(url_fragment.lower()),
   '//a[contains(translate(@href, "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "{}")]'.format(url_fragment.upper())
]
length = len(xpaths)
for cnt in range(length):
  xpath = xpaths[cnt]

  print('# try {}'.format(cnt))
  element = None
  try:
    element = driver.find_element_by_xpath(xpath)
  except InvalidSelectorException, e:
    print('Exception (ignored): {}'.format(e))
    pass
  except NoSuchElementException, e:
    print('Exception (ignored): {0}'.format(e))
    pass
  if element != None:
    print('Found via {}'.format(xpath))
    print(element.get_attribute('outerHTML'))
  else:
    print('Failed via {}'.format(xpath))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы