它将下载一个 WebDriver,然后自动设置基本配置。
项目描述
PWDriver (PyWebDriver)
动机
简化每个不同平台、版本、浏览器的自动化设置。
支持:
-
铬驱动程序
-
壁虎司机
-
EdgeDriver(铬)
-
驱动程序 -
...和 Android、iOS(参见使用 Appium部分)
用法
1.安装:
pip install pwdriver
2. 制作“config.ini”文件并定位到您的项目目录中。
config.ini
看起来像这样。
[automation]
;if using remote webdriver, then local be false and url required.
local=true
url=http://localhost:4444
;target: chrome, gecko, edge, safari
target=chrome
3. 导入WebDriverFactory。
现在,我们可以启动 webdriver。
from pwdriver.core import WebDriverFactory
driver = WebDriverFactory.launch()
替代用法
这种方式不制作也不使用配置文件,而是在您的测试代码中调用驱动程序的 setup 方法。
与铬:
from selenium import webdriver
from pwdriver import core
core.setup_chromedriver()
driver = webdriver.Chrome()
使用火狐:
from selenium import webdriver
from pwdriver import core
core.setup_geckodriver()
driver = webdriver.Firefox()
带边缘:
from selenium import webdriver
from pwdriver import core
core.setup_edgedriver()
driver = webdriver.Edge()
页面对象模型
页面对象模型模式使我们的测试用例更加简洁易读。
好消息是,我们可以使用页面对象。
有一个例子,在上面搜索关键字www.bing.com
并验证 url、title。
为了使用它,我们将创建页面对象类和测试用例的模块。
页面元素和定位器已经实现的模块,所以没关系。
页面对象类
from selenium.webdriver.common.by import By
from pwdriver.page import BasePage
class BingPage(BasePage):
def __init__(self, driver):
super().__init__(driver)
self._url = 'https://www.bing.com'
self._locator = {
'input': (By.CSS_SELECTOR, 'input#sb_form_q'),
'search': (By.CSS_SELECTOR, 'label#search_icon')
}
def type_keyword(self, text) -> None:
self._by('input').send_keys(text)
def click_search(self) -> BasePage:
self._by('search').click()
return BingPage(BasePage)
测试用例
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()
keyword = 'chicken'
page.type_keyword(keyword)
page.click_search()
self.assertIn(f'https://www.bing.com/search?q={keyword}', self.driver.current_url)
self.assertEqual(f'{keyword} - Search', self.driver.title)
if __name__ == '__main__':
unittest.main()
日志记录和事件监听器
如果我们想使用日志记录或者想查看 webdriver 中发生了哪些事件,
我们可以使用get_logger()
or EventListener()
。
请参见下面的示例代码。
测试
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('test')
core = WebDriverFactory.launch()
driver = EventFiringWebDriver(core, EventListener())
logger.info('WebDriver created.')
- 日志级别:
debug
,info
,warning
,error
,critical
- WebDriver 事件:
navigate
,execute script
- WebElement 事件:
find
,click
,change value
与Appium
这个包还包括包装好的 appium 的远程 webdriver。
config.ini
我们可以使用包含功能的文件启动 appium 驱动程序。
请参阅下面的配置和示例代码。
配置
[automation]
;if using appium, then local be false and url required.
local=false
url=http://localhost:4723
;target: android, ios
target=ios
[mobile]
;add capabilities for mobile testing.
platformVersion=15.5
deviceName=iPhone 13 mini
browserName=Safari
测试
from pwdriver.core import WebDriverFactory
driver = WebDriverFactory.launch()
执照
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
pwdriver-0.26.4.tar.gz
(10.3 kB
查看哈希)
内置分布
pwdriver-0.26.4-py3-none-any.whl
(9.5 kB
查看哈希)