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?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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
XPATHandstarts-with():sixth_item = driver.find_element_by_xpath("//*[starts-with(@id, 'coption')]") -
Using
XPATHandcontains():sixth_item = driver.find_element_by_xpath("//*[contains(@id, 'coption')]") -
Using
CSS_SELECTORand^(wildcard of starts-with):sixth_item = driver.find_element_by_css_selector("[id^='coption']") -
Using
CSS_SELECTORand*(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
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0