自动化测试unittest+selenium+HTMLTestRunner

自动化测试unittest+selenium+HTMLTestRunner

import unittest
class foeTest(unittest.TestCase):
    @classmethod ##整个类的初始化
    def setUpClass(cls) -> None:#前置条件
        print('--------初始化整个类-------------\n')
    @classmethod  #释放整个类
    def tearDownClass(cls) -> None:#后置条件
        print('----------释放整个类-----------')


    def setUp(self) -> None:####一个用例的初始化
        print('>>>>>>>>>>初始化开始<<<<<<<<')
    def tearDown(self) -> None:
        print('>>>>>>>>>释放<<<<<<<<<')


    def test_a(self):
        print('测试用例1')
    def test_b(self):
        print('测试用例2')
    def lat(self,a,b):#unittest以test命名才能执行用例,普通函数可以调用在用例中,但不能直接执行,可以通过测试函数调用
        c = a+b
        print(c)
    def test_c(self):

        print(self.lat(3,4))
if __name__ == '__main__':
    unittest.main()
skip()用法:

在case中,对于不需要用例或者特定条件下不执行的用例,可以应用skip()来实现有条件执行,或者绝对性跳过,用于对指定用例进行不执行操作。

import unittest
    @unittest.skip('就是不想执行测试,任性')#装饰在一个用例之前,一个装饰只对一个用例函数生效,跳过这个用例执行,并输出理由。
    def test_2(self):
            print(2)
    @unittest.skipIf(1>2,'这是if的理由')#前面的条件如果为true则不执行skip,如果为false执行跳过并返回理由
    def test_3(self):
        print(3)
   @unittest.skipUnless(1>2,'这是Unless的理由')#与skipIf相反,前面条件为True则执行skip,如果为false则执行函数
    def test_4(self):
        print(4)
    @unittest.expectedFailure#如果执行用例失败,则不计入失败的case中。
    def test_5(self):
        print(5)
        self.assertEqual(3,4,msg='NotEqual')

安装selenium包

pip install -U selenium
三个chromedriver 下载地址:
1、http://chromedriver.storage.googleapis.com/index.html

2、https://npm.taobao.org/mirrors/chromedriver/

3、https://www.jb51.net/softs/538241.html

selenium + python 中文文档

01定位元素

selenium8种定位方式:

		driver.find_element_by_id()                  ##id
        driver.find_element_by_name()               ##name
        driver.find_elements_by_class_name()        # class
        driver.find_element_by_link_text()          # link
        driver.find_element_by_partial_link_text()  #超链接
        driver.find_element_by_xpath()              # xpath
        driver.find_element_by_css_selector()       # css
        driver.find_element_by_tag_name()           # 标签

02控制浏览器

##----------------全屏
driver.maximize_window()
#

03鼠标和键盘操作事件

#####导入ActionChains包
from selenium.webdriver.common.action_chains import ActionChains
#####鼠标事件-----------ActionChains类提供了鼠标操作的常用方法
perform()  :执行所有ActionChains 中存储的行为
context_click()  :右击
double_click()   :双击
drag_and_drop()    :拖动
move_to_element()   :鼠标悬停
#####键盘事件
#使用键盘方法前先导入keys类
from selenium.webdriver.conmmon.keys import Keys
clear() :清除文本
send_keys(value) :模拟按键输入value = Ctrl+A,Ctrl+C
11 driver.find_element_by_id('kw').send_keys('selenium')  #在搜索框中输入"selenium"
12 driver.find_element_by_id('kw').send_keys(Keys.SPACE)  #输入空格键
13 driver.find_element_by_id('kw').send_keys('python')  #在搜索框中输入"python"
14 driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'a')  #输入Control+a模拟全选
15 driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'c')  #输入Control+c模拟复制
16 driver.find_element_by_id('kw').send_keys(Keys.CONTROL, 'v')  #输入Control+v模拟粘贴
17 driver.find_element_by_id('kw').send_keys(Keys.ENTER)  #输入回车代替点击搜索按钮
click() :点击元素
submit() :用于提交表单。
size :返回元素的尺寸
text :获取元素的文本
get_attribute(name) :获得属性值
is_displayed() :设置该元素是否用户可见

04获取验证信息

05警告框处理

#警告框处理方法:
#text:返回(获取)alert、confirm、prompt中的文字信息
#accept():接受现有的警告框
#dismiss():解散现有的警告框
#send_keys(keysToSend):发送文本至警告框
dr.find_element_by_link_text('搜索设置').click()
dr.find_element_by_css_selector("#gxszButton > a.prefpanelgo")
sleep(5)
dr.find_element_by_link_text("保存设置").click()
dr.switch_to.alert.accept()
dr.switch_to.alert.dismiss()
dr.switch_to.alert.send_keys('fsdfsf')
print(dr.switch_to.alert.text)
sleep(2)

06多表单切换

#switch_to.frame/iframe() 定位到框架
#switch_to_default_content()方法返回到主页面
dr.find_element_by_css_selector("#switchAccountLogin").click()
dr.switch_to.frame(dr.find_element_by_xpath("//iframe[starts-with(@id,'x-URS-iframe')]"))
dr.find_element_by_name("email").send_keys("10424089")
dr.find_element_by_name('password').send_keys('trtrertetrrtr')
dr.switch_to.default_content()
#xpath 定位方法: xpath : ("//标签名[ @属性= "属性值"]")
# driver.find_element_by_xpath
# ("//div[contains(@id, 'btn-attention')]")
# driver.find_element_by_xpath
# ("//div[starts-with(@id, 'btn-attention')]")
# driver.find_element_by_xpath
# ("//div[ends-with(@id, 'btn-attention')]")
# # 这个需要结尾是‘btn-attention’
# contains(a, b) 如果a中含有字符串b,则返回true,否则返回false
# starts-with(a, b) 如果a是以字符串b开头,返回true,否则返回false
# ends-with(a, b) 如果a是以字符串b结尾,返回true,否则返回false

07窗口截图和切换窗口

#将截图保存在一个位置
dr.get_screenshot_as_file(文件路径+自定义名字+格式)

HTMLTestRunner

下载HTMLTestRunner包

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值