Install Selenium
To install Selenium webdriver ,
pip3 install selenium
Dirty our hands !
Import Selenium
from selenium import webdriver
Browsers support (Firefox , Chrome , Internet Explorer, Edge , Opera)
Driver setup:
Chrome:
chromedriver = webdriver.Chrome("Chrome Driver Path")
To download: Visit Here
Firefox:
firefoxdriver = webdriver.Firefox("Firefox Driver Path")
To download: Visit GitHub
Internet Explorer:
iedriver = webdriver.IE("IE Driver Path")
To download: Visit Here
Edge:
edgedriver = webdriver.Edge("Edge Driver Path")
To download: Visit Here
Opera:
operadriver = webdriver.Opera("Opera Driver Path")
To download: visit GitHub
Browser Arguments:
–headless
To open browser in headless mode. Works in both Chrome and Firefox browser
–start-maximized
To start browser maximized to screen. Requires only for Chrome browser. Firefox by default starts maximized
–incognito
To open private chrome browser
–disable-notifications
To disable notifications, works Only in Chrome browser
Example:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--headless") options.add_argument("--start-maximized") options.add_argument("--disable-notifications") options.add_argument("--incognito") driver = webdriver.Chrome(chrome_options=options, executable_path="Path to driver")
Alternative
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("--incognito","--start-maximized","--headless") driver = webdriver.Chrome(chrome_options=options, executable_path="Path to driver")
Launch URL
driver.get(url)
Retrieve Browser Details:
driver.title driver.window_handles driver.current_window_handles driver.current_url driver.page_source
Navigation
driver.get(url) driver.back() driver.forward() driver.refresh()
Locating Elements
By id
<input id=”login” type=”text” />
element = driver.find_element_by_id(“login”)
By Class Name
<input class=”gLFyf” type=”text” />
element = driver.find_element_by_class_name(“gLFyf”)
By Name
<input name=”z” type=”text” />
element = driver.find_element_by_name(“z”)
By Tag Name
<div id=”login” >…</div>
element = driver.find_element_by_tag_name(“div”)
By Link Text
<a href=”#”>News</a>
element = driver.find_element_by_link_text(“News”)
By XPath
<form id=”login” action=”submit” method=”get”>
Username: <input type=”text” />
Password: <input type=”password” />
</form>
element = driver.find_element_by_xpath(“//form[@id='login']/input”)
By CSS Selector
<form id=”login” action=”submit” method=”get”>
Username: <input type=”text” />
Password: <input type=”password” />
</form>
element = driver.find_element_by_css_selector(“input.username”)
Clicking / Input text
Clicking button
chromedriver.find_element_by_class_name("gLFyf").click()
Send Text
chromedriver.find_element_by_class_name("gLFyf").send_keys("hello")
Waits
Implicit WaitsAn implicit wait instructs Selenium WebDriver to poll DOM for a certain amount of time, this time can be specified, when trying to find an element or elements that are not available immediately.
from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get("https://www.google.com") driver.find_element_by_name("q").click()
Explicit Waits
Explicit wait make the webdriver wait until certain conditions are fulfilled . Example of a wait
try: element = WebDriverWait(driver, 5).until( EC.presence_of_element_located((By.NAME, "q"))) # Type "selenium" element.send_keys("selenium") # Type Enter element.send_keys(Keys.ENTER) except TimeoutException: print("Failed to load search bar at www.google.com")
List of explicit waits
- title_is
- title_contains
- presence_of_element_located
- visibility_of_element_located
- visibility_of
- presence_of_all_elements_located
- text_to_be_present_in_element
- text_to_be_present_in_element_value
- frame_to_be_available_and_switch_to_it
- invisibility_of_element_located
- element_to_be_clickable
- staleness_of
- element_to_be_selected
- element_located_to_be_selected
- element_selection_state_to_be
- element_located_selection_state_to_be
- alert_is_present
Loading a list of elements like li and selecting one of the element
searchButton_css = "button.btn.Searchbox__searchButton.Searchbox__searchButton--active[data-selenium='searchButton']" inputDestination_css = "input[data-selenium='textInput']" suggestedDestinationList_css = "ul.AutocompleteList" stringBali = "Bali" # Create a new chromedriver instance driver = webdriver.Chrome() # Go to www.agoda.com driver.get("https://www.agoda.com") try: element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, searchButton_css))) driver.find_element_by_css_selector(inputDestination_css).send_keys("Bali Indonesia") except TimeoutException: print("Failed to load page") try: elements = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, suggestedDestinationList_css))) items = driver.find_element_by_css_selector(suggestedDestinationList_css) elementsList = items.find_elements_by_tag_name("li") for item in elementsList: print (item.text +"\n") if item.text in stringBali: item.click() break except TimeoutException: print("Failed to load list")
Read Attribute
print("Title of searchbar : "+ chromedriver.find_element_by_name("q").get_attribute("jsaction"))
Get CSS
# import the webdriver from selenium import webdriver # set exe path and open the browser. driver = webdriver.Chrome() # open website driver.get("https://google.com") # get the css value cssValue = driver.find_element_by_name("q").value_of_css_property("font-size") print("font size searchbar : "+ cssValue)CSS values varies on different browser, you may not get same values for all the browser.
Capture Screenshot
# import the webdriver from selenium import webdriver driver = webdriver.Chrome() driver.get(url) driver.get_screenshot_as_file('sample_screenshot_2.png') driver.save_screenshot('screenshot1.png')save_screenshot("filename") and get_screenshot_as_file("filename) will work only when the extension of file is "png". Otherwise the content cannot be viewed.
is_selected()
is_selected() method in selenium verifies if an element (such as checkbox) is selected or not. is_selected() method returns a boolean.
# import the webdriver from selenium import webdriver driver = webdriver.Chrome(); # open website driver.get("https://google.com/") # get css value isSelected = driver.find_element_by_xpath("//input[@id='selected']").is_selected() print("Is checkbox selected : ", isSelected) Output : Is checkbox selected : ", False
is_displayed()
is_displayed() method in selenium webdriver verifies and returns a boolean based on the state of the element (such as button) whether it is displayed or not.
# import the webdriver from selenium import webdriver driver = webdriver.Chrome() # open website driver.get("https://google.com") # get css value isDisplayed = driver.find_element_by_name("q").is_displayed() print("Is Searchbar Displayed : ", isDisplayed)
is_enabled()
is_enabled() method in selenium python verifies and returns a boolean based on the state of the element (such as button) whether it is enabled or not.
# import the webdriver from selenium import webdriver driver = webdriver.Chrome() # open website driver.get("https://google.com") # element enabled isEnabled = driver.find_element_by_name("q").is_enabled() print("Is searchbar enabled : ", isEnabled)
Minimum modules to import
from selenium import webdriver from selenium.common.exceptions import TimeoutException from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By
node js tutorial
ReplyDeletegadgets to buy
what is xr
what is seo
node js
linkedin strategy
improve website ranking on google
email marketing campaign
how to download video SEO is an on-going process and it takes time to do it effectively. Knowing your target market and your audience plus optimizing your site using the right keywords can ensure you to rank high in Google.
Post a Comment
Your feedback is welcome. Be it positive or negative. Please do not post any irrelevant comment or abuse anyway.