A utility library for Selenium WebDriver to enable human-like interactions, robust exception handling, and web automation tasks like popup handling and URL normalization.
Project description
Selmate
Selmate is a Python utility library designed to enhance Selenium WebDriver automation by providing human-like interactions, robust exception handling, and utilities for common web automation tasks. It simplifies interactions with web elements, handles popups, normalizes URLs, and simulates natural user behavior like mouse movements and scrolling.
Features
- Safe Element Interactions: Wrappers for Selenium operations (clicks, scrolls, etc.) with built-in exception handling for stale elements, timeouts, and more.
- Human-Like Behavior: Simulates realistic mouse movements, scrolling, and latency to mimic human interactions.
- Popup Handling: Automatically detects and handles popup banners, including those within iframes, with options to accept or close them.
- URL Normalization: Utilities to normalize URLs relative to a base URL, with configurable handling of query strings, fragments, and parameters.
- JavaScript Integration: Execute JavaScript for advanced interactions like smooth scrolling, element removal, and visibility checks.
- Text Similarity: Identify confirmation buttons or close buttons using fuzzy text matching.
Installation
Install Selmate via pip:
pip install selmate
Usage
Here are some examples of using Selmate's core functionalities:
Example 1: Safe Element Click
from selenium import webdriver
from selmate.composites import complex_click
from selmate.selenium_primitives import find_element_safely
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# Safely find and click a button
button = find_element_safely(By.ID, "submit-button", driver)
if button and complex_click(button, driver):
print("Button clicked successfully")
driver.quit()
Example 2: Handling Popup Banners
from selenium import webdriver
from selmate.composites import bypass_popup_banners
driver = webdriver.Chrome()
driver.get("https://example.com")
# Automatically handle popup banners
bypass_popup_banners(driver, observation_capacity=50, success_capacity=3, try_close=True)
print("Popups handled")
driver.quit()
Example 3: Human-Like Mouse Movement
from selenium import webdriver
from selmate.composites import wander_between_2_elements
from selmate.selenium_primitives import find_element_safely
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
# Find two elements and simulate mouse movement between them
element1 = find_element_safely(By.ID, "element1", driver)
element2 = find_element_safely(By.ID, "element2", driver)
if element1 and element2:
wander_between_2_elements(element1, element2, driver)
driver.quit()
License
Selmate is licensed under the MIT License. See the LICENSE file for details.
Contact
For questions or support, open an issue or contact the maintainer at waxbid@gmail.com.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file selmate-1.2.0.tar.gz.
File metadata
- Download URL: selmate-1.2.0.tar.gz
- Upload date:
- Size: 16.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.11 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
423435615d5d25ee3ad06017c6cb20ffbea926772f8833eab194cf5ef8e008b0
|
|
| MD5 |
75d8a133e9750a8e3b7c92f96c48da4f
|
|
| BLAKE2b-256 |
d858ec5795a1b0bab77be62a3b10080af99cb07427211dcd331cdaf8065e4ddc
|
File details
Details for the file selmate-1.2.0-py3-none-any.whl.
File metadata
- Download URL: selmate-1.2.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.10.11 Windows/10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d4d4dfa254e3fca6ad470224fde3ea17f3764a81e60375c9b01ad531c1024a8
|
|
| MD5 |
3a536023e8352cfe0f4a5f594491133e
|
|
| BLAKE2b-256 |
0add68b1d6571825f28a30cc11ab73d9f06b8607ea839190eac82c2af30e55f9
|