1. Import the Selenium libraryYou can get Selenium from here. from selenium import webdriver
2. Start the webdriver and the browserStarting the webdriver and the Chrome browser.You can get ChromeDriver from here. chromedriver = "C:/tests/chromedriver.exe"
driver = webdriver.Chrome(executable_path = chromedriver)
Starting the webdriver and the Firefox browser.You can get GeckoDriver from here. geckodriver = "C:/tests/geckodriver.exe"
driver = webdriver.Firefox(executable_path = geckodriver)
Starting the webdriver and the Internet Explorer browser.You can get IEDriverServer from here. iedriver = "C:/tests/IEDriverServer.exe"
driver = webdriver.Firefox(executable_path = iedriver)
Starting the webdriver and the Safari browser.Nothing to download. The SafariDriver is integrated in Safari. driver = webdriver.Safari()
3. Open a websitethe_url = "https://anhtester.com"
driver.get(the_url)
4. Find an elementLet's try to find this element: <a href="/sign-up" id="register" name="register" class="cta nav-link">
Sign Up
</a>
Find element by IDthe_id = 'register'
element = driver.find_element_by_id(the_id)
Find element by Namethe_name = 'register'
element = driver.find_element_by_id(the_name)
Find element by Class Namethe_class_name = 'nav-link'
element = driver.find_element_by_class_name(the_class_name)
Find element by Tag Namethe_tag_name = 'a'
element = driver.find_element_by_tag_name(the_tag_name)
Find element by Link TextWorks only for anchor elements. the_link_text = 'Sign Up'
element = driver.find_element_by_link_text(the_link_text)
Find element by Partial Link TextWorks only for anchor elements. the_partial_link_text = 'Sign'
element = driver.find_element_by_partial_link_text(the_partial_link_text)
Find element by CSS SelectorYou can extract the CSS Selector from the browser.
Or you can write your own by using an attribute from the element: *[attribute="attribute_value"]
For our element, a custom CSS Selector would be: the_css_selector = 'a[href="/sign-up"]'
element = driver.find_element_by_css_selector(the_css_selector)
Find element by XPathYou can extract the XPath from the browser. Or you can write your own by using an attribute from the element: //*[@attribute = "attribute_value"]
For our element, a custom XPath
would be: You can read more about that here. the_xpath = '//a[@href = "/sign-up"]'
element = driver.find_element_by_xpath(the_xpath)
5. Click on an elementthe_id = 'register'
element = driver.find_element_by_id(the_id)
element.click()
6. Write text inside an elementWorks only for inputs and text areas. the_id = 'email'
the_email = ''
element = driver.find_element_by_id(the_id)
element.send_keys(the_email)
7. Select an optionWorks only for select elements. <select id="country">
<option value="US">United States</option>
<option value="CA">Canada</option>
<option value="MX">Mexico</option>
</select>
Let's select Canada. 🇨🇦 You can use the visible text:the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_visible_text('Canada')
You can use the value:the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_value('CA')
You can also use the index:the_id = 'country'
element = driver.find_element_by_id(the_id)
select_element = Select(element)
select_element.select_by_index(1)
8. Take a screenshotthe_path = 'C:/tests/screenshots/1.png'
driver.save_screenshot(the_path)
9. Upload a fileThis works by using the send_keys method to write the local path of the file in the input type="file" element. Let's use this example: <input type="file" multiple="" id="upload_button">
the_file_path = 'C:/tests/files/example.pdf'
the_id = 'upload_button'
element = driver.find_element_by_id(the_id)
element.send_keys(the_file_path)
You can read more about uploading files in a test here. 10. Execute JavaScriptIn some cases, you might need to execute some JavaScript code. This works exactly like you would execute it in your browser console. js_code = 'document.getElementById("pop-up").remove()'
driver = execute_script(js_code)
11. Switch to iframe<iframe id="payment_section">
<input id="card_number">
<input id="card_name">
<input id="expiration_date">
<input id="cvv">
</iframe>
the_iframe_id = 'payment_section'
the_element_id = 'card_number'
the_iframe = driver.find_element_by_id(the_iframe_id)
driver.switch_to.frame(the_iframe)
element = driver.find_element_by_id(the_element_id)
element.send_keys('41111111111111')
driver.switch_to.default_content()
12. Switch to the next tabYou have to store the handle of your current tab in a global variable. If you have only one
tab open, the handle is 0. global nextTab
global currentTab
nextTab = currentTab + 1
driver.switch_to_window(driver.window_handles[nextTab])
currentTab = currentTab + 1
13. Switch to the previous tabglobal previousTab
global currentTab
previousTab = currentTab - 1
driver.switch_to_window(driver.window_handles[previousTab])
currentTab = currentTab - 1
14. Close tab15. Close alertdriver.switch_to.alert.accept()
16. Refresh17. Hoverthe_id = "register"
the_element = driver.find_element_by_id(the_id)
hover = ActionChains(driver).move_to_element(the_element)
hover.perform()
18. Right Clickthe_id = "register"
the_element = driver.find_element_by_id(the_id)
right_click = ActionChains(driver).context_click(the_element)
right_click.perform()
19. Click with offsetIn order to precisely click on a certain position in a canvas element, you have to provide the offset. The offset represents the number of
pixels to the right and down, starting from the top left corner of your canvas element. the_id = "register"
the_element = driver.find_element_by_id(the_id)
x = 30
y = 20
offset = ActionChains(driver).move_to_element_with_offset(the_element,x,y)
offset.click()
offset.perform()
20. Press Keythe_id = 'register'
element = driver.find_element_by_id(the_id)
element.send_keys(Keys.RETURN)
21. Drag and dropelement_to_drag_id = 'ball'
target_element_id = 'goal'
element_to_drag = driver.find_element_by_id(element_to_drag_id)
target_element = driver.find_element_by_id(target_element_id)
ActionChains(driver).drag_and_drop(element_to_drag_id, target_element).perform()
22. Get Page Sourcethe_page_source = driver.page_source
23. Get Cookiescookies_list = driver.get_cookies()
24. Delete Cookiescookie_item = 'shopping_cart'
# delete one cookie
driver.delete_cookie(cookie_item)
# delete all cookies
driver.delete_all_cookies()
25. Get first element from listthe_id = 'register'
list_of_elements = driver.find_elements_by_id(the_id)
first_element = list_of_elements[0]
26. Configure Page Load Timeoutdriver.set_page_load_timeout(20)
from selenium.webdriver.support.ui import WebDriverWait
the_id = 'register'
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.ID, the_id)))
28. Set window sizedriver.set_window_size(1600, 1200)
29. Change the user agent stringthe_user_agent = 'hello'
chromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument('--user-agent = '+ the_user_agent)
driver = webdriver.Chrome(
executable_path = chromedriver,
chrome_options = options)
30. Simulate webcam and microphonechromedriver = 'C:/tests/chromedriver.exe'
options = webdriver.ChromeOptions()
options.add_argument("--use-fake-ui-for-media-stream")
options.add_argument("--use-fake-device-for-media-stream")
driver = webdriver.Chrome(
executable_path = chromedriver,
chrome_options = options)
31. Add Chrome Extensionchromedriver = 'C:/tests/chromedriver.exe'
extension_path = 'C:/tests/my_extension.zip'
options = webdriver.ChromeOptions()
options.add_extension(extension_path)
driver = webdriver.Chrome(
executable_path = chromedriver,
chrome_options = options)
32. Emulate mobile devicegoogle_pixel_3_xl_user_agent = 'Mozilla/5.0 (Linux; Android 9.0; Pixel 3 XL Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.98 Mobile Safari/537.36'
pixel_3_xl_emulation = {
"deviceMetrics": {
"width": 411,
"height": 731,
"pixelRatio": 3
},
"userAgent": google_pixel_3_xl_user_agent
}
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", pixel_3_xl_emulation)
driver = webdriver.Chrome(
executable_path = chromedriver,
chrome_options = options)
Browser Details#Get Browser Name
print(browser.name)
#Get Title
print(browser.title)
#Get Current URL
print(browser.current_url)
#Get Current Window Handle
print(browser.current_window_handle)
#Get All Window Handles
handles_list=browser.window_handles
#Get Page Source
print(browser.page_source)
Maximize and Minimizebrowser.maximize_window()
browser.minimize_window()
Switch to Frame & Windowbrowser.switch_to.active_element
browser.switch_to.alert
browser.switch_to.default_content()
# You can pass Window Name or Handle to switch between windows
browser.switch_to.window("window_name")
#You can switch to frame using Name, ID, Index & WebElement
browser.switch_to.frame(1)
browser.switch_to.parent_frame()
Back, Forward & Refreshbrowser.back()
browser.forward()
browser.refresh()
Cookies#Get all cookies in a list
cookies_list = browser.get_cookies
#Get a Cookie value
cookie_value = browser.get_cookie("my_cookie")
#Delete a Cookie
browser.delete_cookie("my_cookie")
#Delete all Cookies
browser.delete_all_cookies()
#Add Cookie
browser.add_cookie({"name:value"})
Finding Elements#Find Element(s) By ID
element = browser.find_element_by_id("txt_1")
elements = browser.find_elements_by_id("txt_1")
#Find Element By XPATH
browser.find_element_by_xpath("//input")
#Find Element By Link Text
browser.find_element_by_link_text("Products")
#Find Element By Link Text
browser.find_element_by_link_text("Products")
#Find Element By Partial Link Text
browser.find_element_by_partial_link_text('Sign')
#Find Element By Name
browser.find_elements_by_name('foo')
#Find Element By Tag Name
browser.find_elements_by_tag_name('Input')
#Find Element By Class Name
browser.find_elements_by_class_name('breadcrumb')
#Find Element By CSS Selector
browser.find_elements_by_css_selector('input[name="txt"]') |