Skip to main content

selenium-axe-python

selenium-axe-python integrates aXe and selenium to enable automated web accessibility testing.

Originally created as axe-selenium-python by Kimberly Sereduck. Unfortunately she is no longer assigned to the project which means the original project has gone stale. This is a fork of that project with some updates.

This version of selenium-axe-python is using axe-core@4.9.1

License PyPI Supported Versions Checked with mypy Code style: black Imports: isort Ruff

Issues

Build Status Build Status

Requirements

You will need the following prerequisites in order to use selenium-axe-python:

  • selenium >= 4.7.0

  • Python 3.9

  • The appropriate driver for the browser you intend to use, downloaded and added to your path, e.g. geckodriver for Firefox:

Installation

To install selenium-axe-python:

$ pip install selenium-axe-python

Usage

from selenium import webdriver
from selenium_axe_python import Axe


def test_google():
    driver = webdriver.Firefox()
    driver.get("http://www.google.com")
    axe = Axe(driver)
    # Inject axe-core javascript into page.
    axe.inject()
    # Run axe accessibility checks.
    results = axe.run()
    # Write results to jsfile
    axe.write_results(results, 'a11y.json')
    driver.close()
    # Assert no violations are found
    assert len(results["violations"]) == 0, axe.report(results["violations"])

The method axe.run() accepts two parameters: context and options.

For more information on context and options, view the aXe documentation here.

Contributing

You want to contribute? Great! Here are the things you should do before submitting your PR:

  1. Fork the repo and git clone your fork.
  2. dev install the project package:
    1. pip install -e .[dev]
    2. Optional (poetry users):
      1. poetry install --extras dev
  3. Run tox to perform tests frequently.
  4. Create pull-request from your branch.

The original project required you to run npm install (or in most cases did it at install for you) but this limited the use of the package to systems that have npm. This fork includes the latest version of axe-core.

You can run the tests using tox:

$ tox

Alternatively you can use the makefile in the root of the repo:

$ make pre-check-in

Resources

CHANGELOG

version 2.2

  • Drop support for python 3.8

version 2.1.18

  • Updated axe to axe-core@4.9.1

version 2.1.17

  • adding mypy support (py.typed)

version 2.1.16

  • removed old dependencies

version 2.1.15

  • updated to work with python >=3.8
  • restricted selenium version to 4.x
  • Updated axe to axe-core@4.8.3

version 2.1.12

  • forked from original repo axe-selenium-python
  • updated to work with python >=3.7
  • Updated axe to axe-core@4.7.2

version 2.1.5

Breaks backwards compatibility:

  • The Axe class method execute has been renamed to run to mirror the method in the axe-core API.

version 2.1.0

  • Created package.json file to maintain axe-core dependency
  • Replaced unit tests with more meaningful integration tests
    • included a sample html file for integration tests

version 2.0.0

  • All functionalities that are not part of axe-core have been moved into a separate package, pytest-axe. This includes:

    • run_axe helper method
    • get_rules Axe class method
    • run Axe class method
    • impact_included Axe class method
    • analyze Axe class method.

The purpose of this change is to separate implementations that are specific to the Mozilla Firefox Test Engineering team, and leave the base selenium-axe-python package for a more broad use case. This package was modeled off of Deque's Java package, axe-selenium-java, and will now more closely mirror it.

All functionalities can still be utilized when using selenium-axe-python in conjunction with pytest-axe.

version 1.2.3

  • Added the analyze method to the Axe class. This method runs accessibility checks, and writes the JSON results to file based on the page URL and the timestamp.
  • Writing results to file can be enabled by setting the environment variable ACCESSIBILITY_REPORTING=true. The files will be written to results/ directory, which must be created if it does not already exist.
  • Accessibility checks can be disabled by setting the environment variable ACCESSIBILITY_DISABLED=true.

version 1.2.1

  • Updated axe to axe-core@2.6.1
  • Modified impact_included class method to reflect changes to the aXe API:
  • There are now only 3 impact levels: 'critical', 'serious', and 'minor'

version 1.0.0

  • Updated usage examples in README
  • Added docstrings to methods lacking documentation
  • Removed unused files

version 0.0.3

  • Added run method to Axe class to simplify the usage in existing test suites
  • run method includes the ability to set what impact level to test for: 'minor', 'moderate', 'severe', 'critical'

version 0.0.28

  • Added selenium instance as a class attribute
  • Changed file paths to OS independent structure
  • Fixed file read operations to use with keyword

version 0.0.21

  • Fixed include of aXe API file and references to it
  • Updated README

Metadata

Release files for selenium-axe-python 2.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for selenium-axe-python 2.2.0
File Size Uploaded
selenium_axe_python-2.2.0.tar.gz 166.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for selenium-axe-python 2.2.0
File Interpreter ABI Platform
selenium_axe_python-2.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 332.0 kB

Release files / selenium_axe_python-2.2.0.tar.gz

Download URL selenium_axe_python-2.2.0.tar.gz
Size 166.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1fa570caf984d4b5f81beb5108432212f1505defb18d23e5f8eefbd3def3356a
BLAKE2b-256 checksum
How to use checksums
a4fb1ca393b5a90e2f46ec3c4dc2797b86f45797f7d630207fe96761e3c328ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2025.

Transparency log

Release files / selenium_axe_python-2.2.0-py3-none-any.whl

Download URL selenium_axe_python-2.2.0-py3-none-any.whl
Size 165.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b2c38b419e0cc4589c0b4d5d01938579bb95194eb748873e13cac7014e5546fd
BLAKE2b-256 checksum
How to use checksums
653dd7704cca9f220ab954000b13b2c8cb0831b42f0bf1a1b52043cba287136e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 20, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2.2.0 This release

2 release files

2.1.18

2 release files

2.1.17

2 release files

2.1.16

2 release files

2.1.15

2 release files

2.1.14

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page