Skip to main content

Faster, easier and more robust Selenium automation.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elemental-0.4.0.tar.gz (19.7 kB view details)

Uploaded Source

Built Distribution

elemental-0.4.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file elemental-0.4.0.tar.gz.

File metadata

  • Download URL: elemental-0.4.0.tar.gz
  • Upload date:
  • Size: 19.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/50.0.0 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.6.8

File hashes

Hashes for elemental-0.4.0.tar.gz
Algorithm Hash digest
SHA256 cbee48f864f0faac170479060f8af013ace632851c8c20086f02fb2296d3a498
MD5 3c78a85fd7435f87b86cccc1b38f1b46
BLAKE2b-256 99a39485ca7e38dc56a86211244ce30babf7e6f7a7cd2d931bee15ef4ea4102f

See more details on using hashes here.

File details

Details for the file elemental-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: elemental-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 25.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.1 setuptools/50.0.0 requests-toolbelt/0.9.1 tqdm/4.55.1 CPython/3.6.8

File hashes

Hashes for elemental-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c60f71cdbd8a112fd193025cb98572d44b854f2d8dace889472bbac582eacd9c
MD5 84288b6ef16f7db5f06f9c18ddc4a7cd
BLAKE2b-256 555bbba9a7f723cfa22b5c5b410dfd443ee324d053ad44872143c3a19bcf4288

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page