Selenium Locators

Element locator strategies in Selenium.

XPath Locators

Absolute XPath
//html/body/div/form/input

Relative XPath
//input[@id=username]
//input[@name=email]
//button[text()=Submit]

Contains
//input[contains(@class, form)]
//div[contains(text(), Welcome)]

Starts with
//input[starts-with(@id, user)]

CSS Selectors

By ID
#myId

By class
.myClass

By attribute
input[name=email]
input[type=submit]

Contains
[class*=form]

Starts with
[id^=user]

Child combinator
div > input

Descendant
div input

Expected Conditions

Element presence
EC.presence_of_element_located((By.ID, "id"))

Element visible
EC.visibility_of_element_located((By.ID, "id"))

Element clickable
EC.element_to_be_clickable((By.ID, "id"))

Text present
EC.text_to_be_present_in_element((By.ID, "id"), "text")

JavaScript Executor

Execute script
driver.execute_script("window.scrollTo(0, 500);")

Click with JS
element = driver.find_element(By.ID, "myId")
driver.execute_script("arguments[0].click();", element)

Get value
value = driver.execute_script("return document.title;")