It will download a WebDriver, and then set basic configuration automatically.
Project description
PWDriver (PyWebDriver)
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
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14967abc12d4f8e4a78d2af25826e5ee657e3ed4c01e2a9cd95926404cba4828 |
|
MD5 | 459af142555c0d33e6cd9adc2da78047 |
|
BLAKE2b-256 | 099f63f249f242518a5411a962fa09ce4c73f0362f2e8abc0babe7bdac6d4f88 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 015f4d646b1f1d2b984a3602cf320cbc9f9f31752813c6ddef01e884bd5ab336 |
|
MD5 | a9d421dd3f0735b9200d67cbc2702a63 |
|
BLAKE2b-256 | b59d8c7556b6dd47c35b780223d250dcc1a5814a77efb6c9d95a79a565ca7365 |