Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if element exists python selenium

I'm trying to locate element by

element=driver.find_element_by_partial_link_text("text")

in Python selenium and the element does not always exist. Is there a quick line to check if it exists and get NULL or FALSE in place of the error message when it doesn't exist?

like image 826
Nelly Kong Avatar asked Aug 15 '17 15:08

Nelly Kong


2 Answers

You can implement try/except block as below to check whether element present or not:

from selenium.common.exceptions import NoSuchElementException

try:
    element=driver.find_element_by_partial_link_text("text")
except NoSuchElementException:
    print("No element found")

or check the same with one of find_elements_...() methods. It should return you empty list or list of elements matched by passed selector, but no exception in case no elements found:

elements=driver.find_elements_by_partial_link_text("text")
if not elements:
    print("No element found")  
else:
    element = elements[0]  
like image 105
Andersson Avatar answered Nov 16 '22 03:11

Andersson


Sometimes the element does not appear at once, for this case we need to use explicit wait:

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 5)

def is_element_exist(text):
    try:
        wait.until(EC.presence_of_element_located((By.PARTIAL_LINK_TEXT, text)))
    except TimeoutException:
        return False

Solution without try/ except:

def is_element_exist(text):
    elements = wait.until(EC.presence_of_all_elements_located((By.PARTIAL_LINK_TEXT, text)))
    return None if elements else False

How explicit wait works you can read here.

Imports:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
like image 44
Oleksandr Makarenko Avatar answered Nov 16 '22 03:11

Oleksandr Makarenko