Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Selenium
  3. Selene

Selene

MITPython2.0.0rc10

A Python library for writing concise, readable, and maintainable browser UI tests with a user-oriented API.

Visit WebsiteGitHubGitHub
734 stars176 forks0 contributors

What is Selene?

Selene is a Python library for writing browser-based UI tests, built as a Pythonic port of the Java Selenide project. It provides a concise, user-oriented API that abstracts Selenium WebDriver's complexity, enabling developers to write readable and maintainable tests with natural language syntax. It solves the problem of verbose and brittle Selenium scripts by offering smart waiting, automatic retries, and detailed error messages.

Target Audience

Python developers and QA engineers who write browser automation tests and seek more readable, maintainable test code than raw Selenium provides. Teams looking to adopt the Page Object pattern with reusable components.

Value Proposition

Developers choose Selene for its Pythonic, expressive API that makes tests read like English, reducing boilerplate and improving team collaboration. Its automatic waiting and retry mechanisms handle dynamic content reliably, while detailed error messages and flexible configuration simplify test maintenance and debugging.

Overview

User-oriented Web UI browser tests in Python

Use Cases

Best For

  • Writing readable, maintainable browser UI tests in Python
  • Teams adopting the Page Object Model for test structure
  • Testing dynamic web applications with Ajax-like loading
  • Reducing Selenium boilerplate and implicit wait complexity
  • Creating reusable test components with Widgets and custom elements
  • Automating tests across web and mobile platforms with Appium

Not Ideal For

  • Projects requiring direct, low-level Selenium WebDriver manipulation without abstraction
  • Teams that prioritize long-term API stability and cannot tolerate breaking changes
  • Legacy environments stuck on Python 2.7 or older Python 3.x versions (below 3.8)

Pros & Cons

Pros

Readable, English-like Syntax

Selene's API uses modules like `be` and `have` to write tests that read like natural language, reducing boilerplate and improving team collaboration, as shown in the quick start example with commands like `.should(have.text('Selenium'))`.

Automatic Smart Waiting

Built-in implicit waiting and retry mechanisms handle Ajax-like dynamic content automatically, minimizing flaky tests without manual sleep commands, which is a core feature highlighted in the README.

Detailed Error Messages

Provides comprehensive error reports for actions and assertions, making debugging easier by pinpointing failures in decomposed selectors, as emphasized in the 'Flexible filtering of collections' section.

Flexible Configuration

Options like timeouts and selectors can be customized globally, per browser, per element, or per action, offering fine-grained control, as detailed in the 'Highly customizable' feature description.

Cons

Pre-Release API Instability

The recommended version v2.0.0rc9 is still in alpha/beta with ongoing API refinements, risking breaking changes for production use, as admitted in the versions section noting 'some commands are in progress of deprecation and renaming'.

Significant Migration Overhead

Upgrading from v1.x to v2.x requires extensive code changes, including method renames and syntax updates per the migration guide, which can be cumbersome for existing projects.

Dependency on Selenium's Evolution

Selene's abstractions might lag behind Selenium updates, and issues in underlying Selenium can propagate, limiting control over driver-specific features and requiring updates when Selenium changes.

Frequently Asked Questions

Quick Stats

Stars734
Forks176
Contributors0
Open Issues123
Last commit1 day ago
CreatedSince 2015

Tags

#integration-testing#ui-testing#page-object-pattern#selenium#python#testing#webdriver#web-testing#test-automation#e2e-testing#web#automation#browser-automation

Built With

S
Selenium
P
Python

Links & Resources

Website

Included in

Selenium1.1k
Auto-fetched 1 day ago

Related Projects

HeliumHelium

Lighter web automation with Python

Stars8,295
Forks514
Last commit22 days ago
Selenium with PythonSelenium with Python

Selenium Python bindings

Stars0
Forks0
Last commit
RobotRobot

Robot Framework is a generic test automation framework for acceptance testing and ATDD

Stars0
Forks0
Last commit
mechanizemechanize

Stateful programmatic web browsing

Stars0
Forks0
Last commit
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub