selenium+python+unittest+Jenkins自动化测试

以海盗商城网站为环境,进行selenium自动化测试,用unittest框架组织和执行测试用例,使用Jenkins工具定时执行并发送邮件。

流程一:前台购物:

注册+登录+搜索商品+添加购物车+结算+添加收货地址+付款

流程二:用户个人信息修改

登录+账号设置+个人资料+提交

流程三:

后台管理员登录+商品管理+添加商品+输入名称、分类、品牌+提交

一、单脚本总结:

1.元素定位8中方式:

selenium+python+unittest+Jenkins自动化测试_第1张图片

2、对应的操作

 selenium+python+unittest+Jenkins自动化测试_第2张图片

 3.等待方式有三种:隐式等待、显示等待、强制等待

selenium+python+unittest+Jenkins自动化测试_第3张图片

显示等待:WebDriverWait(driver, 30, 0.5).until(expected_conditions.alert_is_present())

 4.窗口切换:

new_windows=driver.window_handles[-1]

driver.switch_to.window(new_windows)

5.下拉框选择

①先定位下拉框

element=river.find_element_by_id("add-new-area-select")

②进行选择

Select(element).select_by

三种方式

.select_by_value

.select_by_index

.select_by_visible text

6.多个元素用find_elements(..)[0]

7.如何操作日历控件

selenium+python+unittest+Jenkins自动化测试_第4张图片

scipt = 'document.getElementById("date").removeAttribute("readonly")'
driver.execute_script(scipt)
driver.find_element_by_id("date").clear()
driver.find_element_by_id("date").send_keys("1996-03-11")

8.弹出框的处理

selenium+python+unittest+Jenkins自动化测试_第5张图片

 9.其他定位方面

多个class属性中间用.连接

 driver.find_element_by_css_selector(".shopCar_btn_03.fl").click()

10.验证码的处理方式

selenium+python+unittest+Jenkins自动化测试_第6张图片

 11.切换frame

driver.switch_to.frame("mainFrame")

selenium+python+unittest+Jenkins自动化测试_第7张图片

12.元素的高级操作

ActionChains(driver).double_click(driver.find_element_by_id("7")).perform()

selenium+python+unittest+Jenkins自动化测试_第8张图片

13.如何上传图片

driver.find_element_by_name("file").send_keys(r"C:\Users\38689\Pictures\111.jpg")

selenium+python+unittest+Jenkins自动化测试_第9张图片

14.css书写

selenium+python+unittest+Jenkins自动化测试_第10张图片

二、测试框架搭建

使用unittest框架来组织测试用例

unitest相关要点:

1.以unitest为框架的类,需要继承unitest.Testcase,如:

class login(unitest.Testcase)

2.方法命名需要以test开头,类中的执行顺序根据test后面的ASCII顺序执行

3. setup()、teardown()  与setUpClass()、tearDownClass()的区别

setup()、teardown() 在每一个方法开始结束前都进行执行;

setUpClass()、tearDownClass()只在类中所有方法开始前、结束后执行一次

setUpClass()、tearDownClass()上面需要增加@classmethod

    @classmethod
    def setUpClass(cls):
        cls.driver =webdriver.Chrome()
        cls.driver.implicitly_wait(5)
        cls.driver.maximize_window()

    @classmethod
    def tearDownClass(cls):
        time.sleep(5)
        cls.driver.quit()

4.将打开关闭浏览器的重复代码单独创建父类class  baseTestCase(unitest.Testcase),以后的测试用例继承这个父类 class login(baseTestCase)

5.unittest的main方法作用

selenium+python+unittest+Jenkins自动化测试_第11张图片

 6.数据驱动测试:

①将测试数据放入csv文件,直接在方法中用for循环读取文件

②创建一个读取csv文件的方法,在测试方法中调用读取文件方法,然后用ddt传入数据,每行测试数据都是一个单独的用例,其中有一条失败不影响其他用例的执行

import ddt
import unittest2

from ceshikuangjia.BaseTestCase import BaseTestCase
from func.csvFileManager2 import reader

@ddt.ddt
class register3(BaseTestCase):
    table=reader("register_testcase.csv")

    @ddt.data(*table)
    def test_register(self,row):
        self.driver.get("http://127.0.0.1/index.php?m=user&c=public&a=reg")
        self.driver.find_element_by_name("username").send_keys(row[0])
        self.driver.find_element_by_name("password").send_keys(row[1])
        self.driver.find_element_by_name("userpassword2").send_keys(row[2])
        self.driver.find_element_by_name("mobile_phone").send_keys(row[3])
        self.driver.find_element_by_name("email").send_keys(row[4])
        # self.driver.find_element_by_class_name("reg_btn").click()
        # print(self.table)
        # print(*self.table)

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

selenium+python+unittest+Jenkins自动化测试_第12张图片

7.使用断言来进行用例执行结果的判断

检查点有网页标题、网址、元素的文本、元素的属性

self.driver.title
self.driver.current_url

self.assertEqual("我的会员中心 - 道e坊商城 - Powered by Haidao",self.driver.title)
self.assertEqual("http://127.0.0.1/index.php?m=user&c=index&a=index", self.driver.current_url)
self.assertEqual("您好 user", welcome)
self.assertEqual("搜    索", search)

8.组织和执行测试用例

可以使用多种方式组织、执行批量测试用例,基本步骤可以分为:一、找出要执行的测试用例,并按顺序放置到suite套件里(如果有要求);二、执行suite套件的运行方法

新建一个脚本驱动文件

一、找出测试用例:

①使用discover方法找到所有需要执行的测试用例

测试文件路径、测试文件命名规则

suite = unittest.defaultTestLoader.discover("./test_case","*Test.py")

②使用addtest按顺序添加测试方法

suite=unittest.TestSuite()

suite.addTest(TestB("testA"))

suite.addTest(TestA("testB"))

suite.addTest(TestB("testC"))

③使用make suite调用其他文件的类名

二、执行:

runner = unittest.TextTestRunner()

runner.run(suite)

9.生成HTML测试报告

①将HTMLTestRunner.py文件放到项目中

②使用HTMLTestRunner这个类代替TextTestRunner来执行测试用例

path = "report/TestReport1.html"
file = open(path,"wb")
runner=HTMLTestRunner(stream=file, verbosity=1,title="自动化测试报告",description="测试环境:Chrome", tester ="111")
runner.run(suite)

 测试报告示例:

selenium+python+unittest+Jenkins自动化测试_第13张图片

三、Jenkins自动执行

利用jenkins工具构建脚本定时执行、发送邮件、SVN版本控制

1.定时执行测试任务

selenium+python+unittest+Jenkins自动化测试_第14张图片

2. 设置邮件提醒

selenium+python+unittest+Jenkins自动化测试_第15张图片

 

邮件发送效果:

selenium+python+unittest+Jenkins自动化测试_第16张图片

3.SVN版本控制

 selenium+python+unittest+Jenkins自动化测试_第17张图片

你可能感兴趣的:(selenium,测试工具)