html – Checking if element exists with Python Selenium

html – Checking if element exists with Python Selenium


from selenium.common.exceptions import NoSuchElementException        
def check_exists_by_xpath(xpath):
    except NoSuchElementException:
        return False
    return True

b) use xpath – the most reliable. Moreover you can take the xpath as a standard throughout all your scripts and create functions as above mentions for universal use.

UPDATE: I wrote the initial answer over 4 years ago and at the time I thought xpath would be the best option. Now I recommend to use css selectors. I still recommend not to mix/use by id, by name and etc and use one single approach instead.

None of the solutions provided seemed at all easiest to me, so Id like to add my own way.

Basically, you get the list of the elements instead of just the element and then count the results; if its zero, then it doesnt exist. Example:

if driver.find_elements_by_css_selector(#element):
    print Element exists

Notice the s in find_elements_by_css_selector to make sure it can be countable.

EDIT: I was checking the len( of the list, but I recently learned that an empty list is falsey, so you dont need to get the length of the list at all, leaving for even simpler code.

Also, another answer says that using xpath is more reliable, which is just not true. See What is the difference between css-selector & Xpath? which is better(according to performance & for cross browser testing)?

html – Checking if element exists with Python Selenium

A) Yes. The easiest way to check if an element exists is to simply call find_element inside a try/catch.

B) Yes, I always try to identify elements without using their text for 2 reasons:

  1. the text is more likely to change and;
  2. if it is important to you, you wont be able to run your tests against localized builds.

solution either:

  1. You can use xpath to find a parent or ancestor element that has an ID or some other unique identifier and then find its child/descendant that matches or;
  2. you could request an ID or name or some other unique identifier for the link itself.

For the follow up questions, using try/catch is how you can tell if an element exists or not and good examples of waits can be found here:

Leave a Reply

Your email address will not be published. Required fields are marked *