@rkfddf

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

Через локатор find_element_by_partial_link_text нахожу элемент, только на разных страницах он выводится по разному - то в верхнем регистре, то в нижнем, иногда в перемешку. При этом такой локатор ничего не находит.
Как произвести поиск в таком случае и не зависить от регистра символов?
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 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))
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы