UI自动化测试

环境搭建

浏览器与驱动的版本需要对应,版本号的前三段需要严格对应,但最后一段可能找不到对应的版本号,但需要尽量缩小差距范围

查看浏览器版本号:Chrome右上角三个点 --> 帮助 --> 关于Goods Chrome

 

配置:

解压压缩包,找到chromedriver.exe复制到chrome的安装目录(其实也可以随便放一个文件夹)。复制chromedriver.exe文件的路径并加入到电脑的环境变量中去。具体的:

 

 

 进入环境变量编辑界面,添加到用户变量即可,双击PATH,将你的文件位置(C:\Program Files (x86)\Google\Chrome\Application\)添加到后面。

 

完成后在cmd下输入chromedriver验证是否安装成功:

 

 

 

 未配置环境也可以,例如:

from selenium import webdriver
import time

def main():
    chrome_driver = 'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe'  #chromedriver的文件位置
    b = webdriver.Chrome(executable_path = chrome_driver)
    b.get('https://www.google.com')
    time.sleep(5)
    b.quit()

if __name__ == '__main__':
    main()

已配置环境变量时

from selenium import webdriver
import time

def main():
    b = webdriver.Chrome()
    b.get('https://www.baidu.com')
    time.sleep(5)
    b.quit()

if __name__ == '__main__':
    main()

如果运行时提示

 

很可能是chromedriver的版本不对

 

 UI自动化测试

针对于页面上的操作,来让程序自动的按照一定的规则跑起来

  • web端的UI自动化
  • app端的UI自动化

市场上对自动化的需求

接口自动化(60%)
unittest:写用例,做断言 requests:发送http请求的
pymysql:查询数据库校验数据正确的
wEb端自动化(30%)
oselenuim:帮助你去操作页面的元素的(操作HTML)
移动端自动化(10%)
appium-client-python:写代码的 appium:编辑adb命令 adb:去操作手机

自动化解决了什么问题?

1.解决-回归测试

2.解决-压力测试

3.解决-兼容性测试

4.提高测试效率,保证产品质量

回归测试:项目在发新版本之后对项目之前的功能进行验证

压力测试:可以理解多用户同时去操作软件,统计软件服务器处理多用户请求的能力

兼容性测试:不同浏览器(IE、Firefox、Chrome)等等

自动化测试的优点

1.较少的时间内运行更多的测试用例;

2.自动化脚本可重每运行;

3.减少人为的错误;

4.克服手工测试的局限性

自动化到试的误区

1.自动化测试可以完全替代手工测试:

2.自动化测试一定比手工测试厉害;

3.自动化测试可以发掘更多的BUG;

4.自动化测试话用于所有功能:

自动化测试分类

1.Web-自动化测试(本阶段学习)

2.移动-自动化测试(本阶段学习)

3.接口-自动化测试

4.单元测试

id,class,name,tagname定位

from selenium import webdriver
import time


# 连接浏览器驱动文件
# 未配置环境变量括号里必须写
browser = webdriver.Chrome('./chromedriver.exe')
# 配置环境变量的情况下,括号里不用写
# browser = webdriver.Chrome()

# 请求的网站
browser.get('file:///C:/Users/huozhiming/Desktop/chromedriver/pagetest/%E6%B3%A8%E5%86%8CA.html')
#
# browser.find_element_by_id('userA').send_keys('hzm')
#
# time.sleep(2)
#
# browser.find_element_by_class_name('telA').send_keys('15702680814')
#
# time.sleep(2)
# # 模糊匹配文本找到超链接打开网页    click意思是点击事件
# # browser.find_element_by_partial_link_text('访问').click()
# # time.sleep(5)
# # 先定位超链接 再定位 超链接里的文本
# # 通过文本找到新浪的超链接 并点击
# browser.find_element_by_link_text('新浪').click()
# time.sleep(5)
# # 关闭网页
# browser.quit()

Xpath定位

'''
Xpath定位
'''
# 1.绝对路径定位
# browser.find_element_by_xpath('/html/body/div/fieldset/form/p[2]/input').send_keys('123456789')
# 延时时间戳
# time.sleep(3)

# 2.相对路径定位
# browser.find_element_by_xpath('//form/p[1]/input').send_keys('hhhh')
# time.sleep(3)

# 3.元素属性定位
# browser.find_element_by_xpath('//*[@placeholder="请输入用户名"]').send_keys('123')
# time.sleep(3)

 

css定位

'''
css定位
'''
from selenium.webdriver.common.by import By

# 1.id选择器   #id名称
# # By 是新写法
# browser.find_element(By.ID, 'userA').send_keys('admin')
# time.sleep(3)

# 2.class选择器  .class名
# browser.find_element_by_css_selector('.emailA').send_keys('123@qq.com')

# 3.元素选择器
# browser.find_element_by_css_selector("input").send_keys('哈哈哈')
# time.sleep(2)

# 4.属性选择器(单属性)
# browser.find_element_by_css_selector("[name='user']").send_keys('666')
# time.sleep(5)

# 属性选择器(多属性)
# browser.find_element_by_css_selector("[name='user'][class='login-test']").send_keys('123/<>')
# time.sleep(5)
By用法:By是新用法(比较常用)

层级选择器

'''
层级选择器
'''
# 1.父子层级关系选择器
# browser.find_element_by_css_selector("#pa>#userA").send_keys('qwe')
# time.sleep(5)
# 2.隔代层级关系选择器
# browser.find_element_by_css_selector('.zc #userA').send_keys('1312135')

选择器异常捕获

try:
    # 隔代层级关系选择器
    browser.find_element_by_css_selector('.zc #userA').send_keys('1312135')
    time.sleep(5)
# 异常捕获
except Exception as e:
    raise e
# 无论如何都会执行,错误或者正常 网页都会关闭
finally:
    time.sleep(3)
    browser.quit()

 

posted on 2021-07-12 21:57  晴天,  阅读(890)  评论(0)    收藏  举报