Могу ли я найти элемент с использованием регулярного выражения с Python и Selenium?

Мне нужно щелкнуть выпадающий список и нажать на него скрытый элемент. html будет сгенерирован javascript, и я не буду знать имя или имя класса, но я буду знать, что в нем будет фраза. Могу ли я найти и элемент по регулярному выражению, а затем щелкнуть его с помощью селена?

Вы не можете просто выполнять поиск по регулярному выражению с помощью встроенных локаторов веб-селен селена, но у вас есть несколько вещей, которые могут вам помочь:

  • contains() и starts-with() функциями XPath:

     //div[contains(., "Desired text")] //div[starts-with(., "Desired text")] 
  • preceding , preceding-sibling , following и following-sibling ось following-sibling которые могут помочь вам, если вы знаете относительное положение вновь созданного блока элементов, который вам нужно найти

Существуют также селектор CSS для частичного соответствия атрибутов элемента:

 a[href*=desiredSubstring] # contains a[href^=desiredSubstring] # starts-with a[href$=desiredSubstring] # ends-with 

И вы всегда можете найти больше элементов, чем необходимо, и отфильтровать их позже в Python, например:

 import re pattern = re.compile(r"^Some \w+ text.$") elements = driver.find_elements_by_css_selector("div.some_class") for element in elements: match = pattern.match(element.text) if match: print(element.text)