Skip to main content

Selenium wrapper for testing Web UI

Project description

https://img.shields.io/badge/python-2.7%20...%203.12-blue.svg https://badge.fury.io/py/Promium.svg

Simple selenium wrapper from implemented UI tests

Watch documentation

Coverage link

Quick Start

Install

Promium

pip install promium

Selenium

pip install selenium

Driver

# get actual chrome driver version
CHROME_DRIVER_VERSION=$(wget http://chromedriver.storage.googleapis.com/LATEST_RELEASE -q -O -)

# download chrome driver
wget --no-verbose -O /tmp/chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip

# unpack
unzip /tmp/chromedriver_linux64.zip -d /opt/selenium

# add link from chrome driver
ln -fs /opt/selenium/chromedriver /usr/bin/chromedriver

Examples

Page Objects (pages/google_page.py)

from selenium.webdriver.common.by import By

from promium import Page, Block, Element, InputField, Link


class ResultBlock(Block):

    title = Link(By.CSS_SELECTOR, 'h3')
    link = Element(By.CSS_SELECTOR, '.f')
    description = Element(By.CSS_SELECTOR, '.st')
    tags = Element.as_list(By.CSS_SELECTOR, '.osl .fl')


class GoogleResultPage(Page):

    results_blocks = ResultBlock.as_list(By.CSS_SELECTOR, '#rso .srg div.g')


class GoogleMainPage(Page):

    url = 'https://google.com'
    logo = Element(By.CSS_SELECTOR, '#hplogo')
    search_input = InputField(By.CSS_SELECTOR, '[name="q"]')

    def search(self, text):
        self.search_input.send_keys(text)
        self.search_input.submit()
        return GoogleResultPage(self.driver)

Simple test from (test_google.py)

from promium.test_case import WebDriverTestCase

from tests.pages.google_page import GoogleMainPage


class TestMainGooglePage(WebDriverTestCase):

    def test_search(self):
        main_page = GoogleMainPage(self.driver)
        main_page.open()
        self.soft_assert_element_is_displayed(main_page.logo)
        result_page = main_page.search('Selenium')
        result_block = result_page.results_blocks.first_item
        self.soft_assert_in('Selenium', result_block.title.text)

Run test

# all tests
pytest tests/

# all tests in suite
pytest tests/test_google.py

# only one test
pytest tests/test_google.py -k test_search

Develop

Build docker image:

docker build --cache-from registry.evo.dev/qa-automation/promium/base-env:latest -f docker/Dockerfile -t registry.evo.dev/qa-automation/promium/base-env:latest .

check lint:

docker-compose run flake8

run selenium(ui) test:

docker-compose run test-se -n 8

run request test:

docker-compose run test-requests -n 8

run unit test:

docker-compose run test-unit -n 8

Build documentation:

docker-compose run doc

Run test into container:

docker run -e SE_DRIVER=http+chrome://static-selenium-hub.qa-automation.stg.evo/wd/hub -e HEADLESS=Enabled --net=host -it registry.evo.dev/qa-automation/promium/base-env:latest pytest -p no:warnings -p no:cacheprovider -v -m se -n 4

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

promium-3.6.0.tar.gz (43.6 kB view details)

Uploaded Source

File details

Details for the file promium-3.6.0.tar.gz.

File metadata

  • Download URL: promium-3.6.0.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for promium-3.6.0.tar.gz
Algorithm Hash digest
SHA256 97524ea5e5651a48819b1d3f9188176fce963e5cf8f8c98fd7ea21bd13624f98
MD5 25ee27e29b995db314a16fb3a4b494f7
BLAKE2b-256 ad5e9236a29d97d871a57c1709ec348940da5f810284dd4e2ba622e30e0f21ec

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