All Projects → red-and-black → elemental

red-and-black / elemental

Licence: MIT license
Elemental makes Selenium automation faster and easier.

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
Makefile
30231 projects

Projects that are alternatives of or similar to elemental

Uirecorder
UI Recorder is a multi-platform UI test recorder.
Stars: ✭ 1,895 (+5163.89%)
Mutual labels:  webdriver
Panther
A browser testing and web crawling library for PHP and Symfony
Stars: ✭ 2,480 (+6788.89%)
Mutual labels:  webdriver
Selenium Python Helium
Selenium-python but lighter: Helium is the best Python library for web automation.
Stars: ✭ 2,732 (+7488.89%)
Mutual labels:  webdriver
Windows Images
Step by step instructions for building Docker images with Windows
Stars: ✭ 170 (+372.22%)
Mutual labels:  webdriver
Xctestwd
A Swift implementation of WebDriver server for iOS that runs on Simulator/iOS devices.
Stars: ✭ 195 (+441.67%)
Mutual labels:  webdriver
Element
💦Load test your app using real web browsers
Stars: ✭ 204 (+466.67%)
Mutual labels:  webdriver
Java.webdriver
Browser test automation using Selenium WebDriver in Java
Stars: ✭ 135 (+275%)
Mutual labels:  webdriver
Pytest Selenium
Plugin for running Selenium with pytest
Stars: ✭ 246 (+583.33%)
Mutual labels:  webdriver
Python Scripts
Collection of Various Python Script's.💻
Stars: ✭ 195 (+441.67%)
Mutual labels:  webdriver
Steward
PHP libraries that makes Selenium WebDriver + PHPUnit functional testing easy and robust
Stars: ✭ 215 (+497.22%)
Mutual labels:  webdriver
Nosmoke
A cross platform UI crawler which scans view trees then generate and execute UI test cases.
Stars: ✭ 178 (+394.44%)
Mutual labels:  webdriver
Thirtyfour
Selenium WebDriver client for Rust, for automated testing of websites
Stars: ✭ 191 (+430.56%)
Mutual labels:  webdriver
Arsenic
Async WebDriver implementation for asyncio and asyncio-compatible frameworks
Stars: ✭ 209 (+480.56%)
Mutual labels:  webdriver
Qtwebdriver
WebDriver implementation for Qt
Stars: ✭ 152 (+322.22%)
Mutual labels:  webdriver
Cdp4j
cdp4j - Chrome DevTools Protocol for Java
Stars: ✭ 232 (+544.44%)
Mutual labels:  webdriver
Webium
Webium is a Page Object pattern implementation library for Python (http://martinfowler.com/bliki/PageObject.html). It allows you to extend WebElement class to your custom controls like Link, Button and group them as pages.
Stars: ✭ 144 (+300%)
Mutual labels:  webdriver
Appium
📱 Automation for iOS, Android, and Windows Apps.
Stars: ✭ 14,469 (+40091.67%)
Mutual labels:  webdriver
Selion
Enabling Test Automation in Java
Stars: ✭ 252 (+600%)
Mutual labels:  webdriver
Selenoid Ui
Graphical user interface for Selenoid project
Stars: ✭ 237 (+558.33%)
Mutual labels:  webdriver
Splinter
splinter - python test framework for web applications
Stars: ✭ 2,476 (+6777.78%)
Mutual labels:  webdriver

Elemental

Elemental makes Selenium automation faster and easier.

Adds common use-cases

Common use-cases missing from Selenium are built into Elemental. Get an input by its label or placeholder? Can do. Get a button by its text or type? Sure. Get an element's parent? Yep. Get the fourth element in a list? No problem.

Automatic waiting

Elemental has built-in automatic waiting so that your automation is less flaky. It has a sensible default which can be overriden when necessary.

The full power of Selenium

For complex operations which require the full power of the Selenium, Elemental gives you easy access to 100% of Selenium's API.

Terse, clean API

Write less code than you would if you were using Selenium directly. The Elemental API is terse and internally consistent while still being explicit and unambiguous.

The power of Elemental

import elemental

# Set up.
browser = elemental.Browser()

# Search PyPI for Elemental.
browser.visit("https://www.pypi.org")
browser.get_input(placeholder="Search projects").fill("elemental")
browser.get_button(type="submit").click()

# Click the first search result.
browser.get_element(partial_text="elemental").click()

# Confirm that Elemental's PyPI page was found.
assert browser.title == "elemental · PyPI"

# Tear down.
browser.quit()

Installation

$ pip install elemental

Development

Get set up, preferably in a virtualenv:

$ make init
$ make install

Lint the code:

$ make lint

Run the tests:

$ make test

Build the docs:

$ cd docs
$ make html

Releasing

  1. Check out the main branch.

  2. Ensure CHANGELOG.rst includes everything to go in the release and is committed.

  3. Ensure everything to go in the release is committed.

  4. Increment the version in elemental/__init__.py and docs/source/conf.py.

  5. Shift everything in the Unreleased section of CHANGELOG.rst to a new section named with the new version number and the current date.

  6. Ensure CI runs without warnings or errors:

    $ make ci
    
  7. Make and tag the release commit:

    $ make release
    
  8. Build the package:

    $ make package
    
  9. Publish the package to PyPI:

    $ make publish
    
  10. Push to the repo and clean up packaging artifacts:

    $ make push
    $ make clean
    
  11. Create a GitHub release.

Code style

  1. Only modules are imported. Classes, functions and variables are not imported directly.
  2. A module's functions are ordered alphabetically.
  3. A module's private functions are placed alphabetically at the bottom of the module.
  4. Docstrings follow the NumPy docstring guide.
  5. Strings are enclosed with double quotes.
  6. The last item of a multi-line dictionary or list has a trailing comma.

Changes

For what has changed in each version, see CHANGELOG.rst.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].