Developer Snippet Diary

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()
Posted by: R GONDAL
Email: rizikmw@gmail.com