Find elements using selenium python, Get Attributes, send keys
1. load page , if ajax then use waits
driver.get("http://www.google.com")
2. Find element
element = driver.find_element(By.ID, "passwd-id")
element = driver.find_element(By.NAME, "passwd")
element = driver.find_element(By.XPATH, "//input[@id='passwd-id']")
element = driver.find_element(By.CSS_SELECTOR, "input#passwd-id")
class_prefix = "question_item_"
all_question_boxs = self.driver.find_elements(By.CSS_SELECTOR, f"[class*='{class_prefix}']")
# FIND ALL elements with question_item_1, question_item_2, question_item_3 upto so on
ATTRIBUTES USED TO FIND ELEMENT
ID = "id"
NAME = "name"
XPATH = "xpath"
LINK_TEXT = "link text"
PARTIAL_LINK_TEXT = "partial link text"
TAG_NAME = "tag name"
CLASS_NAME = "class name"
CSS_SELECTOR = "css selector"
3. send keys
element.clear()
element.send_keys("some text")
element.send_keys(" and some", Keys.ARROW_DOWN)
elem = driver.find_element(By.TAG_NAME, "html") #scroll page to end of page
elem.send_keys(Keys.END)
4. Get attributes
element = driver.find_element(By.XPATH, "//select[@name='name']")
all_options = element.find_elements(By.TAG_NAME, "option")
for option in all_options:
print("Value is: %s" % option.get_attribute("value"))
option.click()
OR
from selenium.webdriver.support.ui import Select
select = Select(driver.find_element(By.NAME, 'name'))
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)
# to deselect
select = Select(driver.find_element(By.ID, 'id'))
select.deselect_all()
# select all options
select = Select(driver.find_element(By.XPATH, "//select[@name='name']"))
all_selected_options = select.all_selected_options
# click on submit
driver.find_element_by_id("submit").click()
5. Get text, HTML, SCREENSHOOT, Keys send etc...
element.text #
element.get_attribute("class") #
element.location >>{'x': 500, 'y': 449} # location of element
element.screenshot('abc.png') # screenshoot as png
element.screenshot_as_base64 # screenshoot store in variable
element.send_keys("admin") # send keys
element.send_keys("path/to/profilepic.gif") # image upload, image in root
element.size {'height': 30, 'width': 104} # get width and height of element
element.tag_name # Get Tag Name
element.get_attribute('innerHTML') #Get inside HTML of selected element
get_attribute('outerHTML') #Get HTML with selected element
6. COOKIES SET AND GET
# Go to the correct domain
driver.get("http://www.example.com")
# Now set the cookie. This one's valid for the entire domain
cookie = {‘name’ : ‘foo’, ‘value’ : ‘bar’}
driver.add_cookie(cookie)
# And now output all the available cookies for the current URL
driver.get_cookies()