Skip to main content

它将下载一个 WebDriver,然后自动设置基本配置。

项目描述

PWDriver (PyWebDriver)

E2e测试 代码覆盖率

发布状态 PyPI 版本

麻省理工学院许可证 福萨状态

动机

简化每个不同平台、版本、浏览器的自动化设置。

支持:
  • 铬驱动程序

  • 壁虎司机

  • 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 查看哈希

已上传 source

内置分布

pwdriver-0.26.4-py3-none-any.whl (9.5 kB 查看哈希

已上传 py3