Selenium Python

0 Comments

Getting Started with Selenium in Python

Introduction

Selenium is a powerful tool for web automation that allows developers and testers to interact with web applications just like a real user. It is widely used for automated testing of web applications, web scraping, and bot development. In this blog, we will cover how to set up Selenium in Python, locate web elements, perform actions, handle waits effectively, and explore advanced topics.

1. Installing Selenium

To get started, install Selenium using pip:

pip install selenium

You will also need a web driver, such as ChromeDriver, which can be downloaded from the ChromeDriver website.

2. Setting Up WebDriver

Once you have downloaded the driver, save it in a known location and initialize it in your Python script:

from selenium import webdriver

# Initialize WebDriver
driver = webdriver.Chrome(executable_path="path/to/chromedriver")
driver.get("https://www.example.com")

# Print the page title
print(driver.title)

# Close the browser
driver.quit()

This script opens a website, prints its title, and then closes the browser.

3. Locating Web Elements

Selenium provides various methods to locate elements on a web page:

from selenium.webdriver.common.by import By

# Finding an element by name
element = driver.find_element(By.NAME, "q")

Other strategies include:

  • By.ID
  • By.CLASS_NAME
  • By.XPATH
  • By.CSS_SELECTOR
  • By.TAG_NAME
  • By.LINK_TEXT

4. Performing Actions on Elements

You can interact with web elements, such as clicking buttons, entering text, or selecting options:

# Typing into a search box
element.send_keys("Selenium Python")  

# Submitting a form
element.submit()

Other actions include:

  • element.click() – Clicks a button or link.
  • element.clear() – Clears text from an input field.
  • element.get_attribute("value") – Retrieves an attribute value.
  • element.is_displayed() – Checks if the element is visible on the page.

5. Handling Waits in Selenium

To ensure elements are loaded before interaction, use explicit waits:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Wait until the element is present
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "search")))

Types of waits in Selenium:

  • Implicit Waits: Applies a default wait time before throwing an error if an element is not found.
  • Explicit Waits: Waits for a specific condition before proceeding.
  • Fluent Waits: Polls for an element at intervals before timing out.

6. Handling Alerts and Pop-ups

To handle JavaScript alerts and pop-ups:

alert = driver.switch_to.alert
print(alert.text)
alert.accept()  # Clicks OK
# alert.dismiss()  # Clicks Cancel

7. Taking Screenshots

You can capture screenshots using Selenium:

driver.save_screenshot("screenshot.png")

8. Running Tests in Headless Mode

To run tests without opening a browser window:

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)

9. Handling Frames and Windows

To switch between frames:

driver.switch_to.frame("frame_name")
# Switch back to the main content
driver.switch_to.default_content()

To handle multiple browser windows:

original_window = driver.current_window_handle
for window_handle in driver.window_handles:
    driver.switch_to.window(window_handle)

Conclusion

Selenium in Python is a great tool for automating web applications. With these basic and advanced concepts, you can start writing your own automation scripts efficiently. Stay tuned for more topics like handling dynamic elements, working with cookies, and executing JavaScript in Selenium!