Skip to content

jerrylizilong/python-selenium-demo

Repository files navigation

python-selenium-demo

demo 1. 使用 python + selenium 调用浏览器进行操作的例子。

demo.py :

执行该文件,完成第一个目标:实现自动打开网页、输入待转换数据、点击转换按钮、获取转换结果的过程。

demo 2. unittest_version: 使用unittest 实现多个用例调用的例子,并进行断言判断。

convert_up_low_test.py: 实现第二个目标:使用unittest ,对不同的输入数据进行测试和验证结果。

demo 3.pytest_version: 使用pytest执行目录中所有test 文件,并生成对应 html 报告文件。

3.1 pytest

使用 pytest 执行测试用例,并生成对应的 html report。

3.2 所需模块

  • 安装pytest: pip install pytest
  • 安装pytest-html: pip install pytest-html

3.3 demo

执行 run_pytest.bat 文件,将查找当前目录中 test 开头的py 文件,并执行其中的 test 方法,最终生成 html 格式的报告。

3.4报告样例(在浏览器中打开):

test_report_20180805-233950.html

demo 4: 使用 Python behave 模块进行 BDD 行为驱动测试

behavior 模块, 样例:

Feature: test for the lower-upper convent
  Scenario: convent lower to upper
    When I open page
    When I input "abcdefghijk"
    When I click "大写"
    Then I see "ABCDEFGHIJK"

demo 5. 使用PageObject设计模式组织用例

  • page_object.py : 存放页面元素对象及对应操作方法

  • test_run_as_page_object.py: 10条用例,分别在百度页面搜索一个关键字,并验证查询结果第一条是否包含关键字。

demo 6: 使用关键字驱动模式组织用例

keyword:

  • 以关键字的方式组织用例步骤,可以将用例从脚本中脱离。
  • keywords.py 文件中定义了不同关键字对应的执行方法
  • 用例样例:
Chrome,前往|http://www.baidu.com,验证标题|百度一下,填写|id@@kw@@百度,点击|id@@su,验证文字|xpath@@//*[@id="1"]/h3/a/em@@百度
  • 关键字格式:
关键字|元素定位方式@@元素属性值@@其他参数填写|id@@kw@@百度   表示步骤为填写”, 通过 id = kw 定位元素并在定位元素中输入百度

步骤定义:

  • steps.py 文件中定义了关键字对应的执行方法

用例执行:

  • test_run_as_data_driven.py 文件中给出了5条对应的例子,分别对百度首页五个链接和功能进行测试。

demo 7: 使用独立的用例文件管理用例

用例步骤、关键字定义: 与 demo6 相同。

用例执行:

  • 用例可以使用不同的存储方式进行独立存储,完全脱离于执行用例的脚本。
  • 可通过数据库、excel、txt 等不同的方式存储用例。 这里以txt 为例,演示如何读取用例并执行。
  • 为提高测试执行效率,使用multiprocessing 模块对用例进行并发执行。 可根据需要设置具体的并发数。

demo 8: 使用PageObject设计模式组织用例

  • page_object.py : 存放页面元素对象及对应操作方法
        self.search_box =(By.ID,'kw')
        self.search_button = (By.ID,'su')
        self.search_result = (By.XPATH,'//*[@id="1"]/h3/a[1]/em')
  • test_run_as_page_object.py: 调用方式如下
        self.driver.find_element(*testBaiduPage().search_box).send_keys('testerhome')
        self.driver.find_element(*testBaiduPage().search_button).click()
        assert 'TesterHome' in self.driver.find_element(*testBaiduPage().search_result).text

demo 9: 使用pytest 的pytest.mark.parametrize 进行参数化组织用例

需安装 pytest

('keyword,language,result',[
    ('test','英语','测验'),
    ('android','英语','安卓'),
    ('mobile','英语','可移动的'),
    ('country','英语','国'),
    ('value','英语','价值'),
    ('football','英语','足球运动'),
    ('篮球','中文(简体)','Basketball'),
    ('Futebol','葡萄牙语','足球运动'),
    ('ワールドカップ','日语','世界杯'),
    ('网球','中文(简体)','Tennis'),
    ('Copa del mundo','西班牙语','世界杯'),
    ('足球','中文(简体)','Football'),

])
def test_baidu_translate(homepage_driver,keyword,language,result):

About

demo for using python+selenium to start testing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published