Skip to main content

It will download a WebDriver, and then set basic configuration automatically.

Project description

PWDriver (PyWebDriver)

E2e test Code Coverage

Release status PyPI version

MIT License FOSSA Status

Motivation

To simplify automation settings of each different version, and browser.

Support:
  • ChromeDriver

  • GeckoDriver

  • EdgeDriver (Chromium)

  • IEDriver

Usage

1. Install:

pip install pwdriver

2. Make 'config.ini' file and locate in your project directory.

config.ini 's contents look like this.

[automation]
;automation.browser: chrome, gecko, edge, safari
automation.browser=chrome
;automation.local: true, false
automation.local=true
automation.url=http://localhost:4444/wd/hub

3. Import WebDriverFactory.

Now, we can launch webdriver.

from pwdriver.core import WebDriverFactory

driver = WebDriverFactory().launch()

Different Usage(using selenium)

Use with Chrome:

from selenium import webdriver
from pwdriver import core

core.setup_chromedriver()
driver = webdriver.Chrome()

Use with FireFox:

from selenium import webdriver
from pwdriver import core

core.setup_geckodriver()
driver = webdriver.Firefox()

Use with Edge:

from selenium import webdriver
from pwdriver import core

core.setup_edgedriver()
driver = webdriver.Edge()

Page object models

Page object models pattern makes our test cases more concise and readable.

The good news is, we can use Page Objects with this.

There is an example that searching for keyword on www.bing.com and verifying url, title.

For using this, we are going to create modules that page object classes and test cases.

Modules that page elements and locators already implemented, so nevermind.

Page Object Class

pages/bing_page.py look like this.

from selenium.webdriver.common.by import By
from pwdriver.page import BasePage


class BingPage(BasePage):
    _url = 'https://www.bing.com'
    _locator = {
        'input': (By.CSS_SELECTOR, 'input#sb_form_q'),
        'search': (By.CSS_SELECTOR, 'label#search_icon')
    }

    def __init__(self, driver):
        super().__init__(driver)

    def type_keyword(self, text) -> None:
        self._by('input').send_keys(text)

    def click_search(self) -> BasePage:
        self._by('search').click()
        return BingPage(BasePage)

Test case

page_object.py look like this.

from pwdriver.core import WebDriverFactory
from tests.pages.bing_page import BingPage

import unittest


class BrowserTest(unittest.TestCase):
    def setUp(self):
        self.driver = WebDriverFactory().launch()

    def tearDown(self):
        self.driver.quit()

    def test_something(self):
        page = BingPage(self.driver)
        page.get()
        page.type_keyword("치킨")
        page.click_search()
        self.assertIn("https://www.bing.com/search?q=%EC%B9%98%ED%82%A8", self.driver.current_url)
        self.assertEqual("치킨 - Search", self.driver.title)


if __name__ == '__main__':
    unittest.main()

Logging and Event listener

If we want to use logging or want to see what events occured in webdriver,

we can use get_logger or EventListener().

See below example code.

from selenium.webdriver.support.events import EventFiringWebDriver

from pwdriver.core import WebDriverFactory
from pwdriver.listener import EventListener
from pwdriver.util import get_logger

logger = get_logger('eventdriver')

core = WebDriverFactory().launch()
driver = EventFiringWebDriver(core, EventListener())
logger.info('WebDriver created.')
  • Log level: debug, info, warning, error, critical
  • WebDriver event: navigate, execute script
  • WebElement event: find, click, change value

License

FOSSA Status

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

pwdriver-0.26.1.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

pwdriver-0.26.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file pwdriver-0.26.1.tar.gz.

File metadata

  • Download URL: pwdriver-0.26.1.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pwdriver-0.26.1.tar.gz
Algorithm Hash digest
SHA256 14967abc12d4f8e4a78d2af25826e5ee657e3ed4c01e2a9cd95926404cba4828
MD5 459af142555c0d33e6cd9adc2da78047
BLAKE2b-256 099f63f249f242518a5411a962fa09ce4c73f0362f2e8abc0babe7bdac6d4f88

See more details on using hashes here.

File details

Details for the file pwdriver-0.26.1-py3-none-any.whl.

File metadata

  • Download URL: pwdriver-0.26.1-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pwdriver-0.26.1-py3-none-any.whl
Algorithm Hash digest
SHA256 015f4d646b1f1d2b984a3602cf320cbc9f9f31752813c6ddef01e884bd5ab336
MD5 a9d421dd3f0735b9200d67cbc2702a63
BLAKE2b-256 b59d8c7556b6dd47c35b780223d250dcc1a5814a77efb6c9d95a79a565ca7365

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