I’m using selenium with python,now I want to locate an element by part of its id name,what can I do?
For example,now I’ve already located a item by id name coption5 :
sixth_item = driver.find_element_by_id("coption5")
Is there anyway I can locate this element only by using coption?
Advertisement
Answer
To find the element which you have located with:
sixth_item = driver.find_element_by_id("coption5")
To locate this element only by using coption you can use can use either of the following Locator Strategies:
Using
XPATH
andstarts-with()
:sixth_item = driver.find_element_by_xpath("//*[starts-with(@id, 'coption')]")
Using
XPATH
andcontains()
:sixth_item = driver.find_element_by_xpath("//*[contains(@id, 'coption')]")
Using
CSS_SELECTOR
and^
(wildcard of starts-with):sixth_item = driver.find_element_by_css_selector("[id^='coption']")
Using
CSS_SELECTOR
and*
(wildcard of contains):sixth_item = driver.find_element_by_css_selector("[id*='coption']")
Reference
You can find a detailed discussion on dynamic CssSelectors in:
- How to get selectors with dynamic part inside using Selenium with Python?
- Java Selenium webdriver expression finding dynamic element by ccs that starts with and ends with
- How to click a dynamic link with in a drupal 8 website using xpath/css selector while automating through Selenium and Python
- Finding elements by CSS selector with ChromeDriver (Selenium) in Python