测试秋招八股文集锦——自动化测试实战(基础篇)
前言:写自动化实战原由
上篇关于线程进程的文章最后,我让朋友们留言下篇想看的文章,呼声最高的是Linux、测试用例设计,还有让我眼前一亮的游同学等的留言:"希望看到自动化实战,牛客这方面比较少",这留言很有说服力,让我无法拒绝。
今天午睡没睡着就一直在构思自动化测试内容,好家伙,这可是个大工程,为了让大家更快速的入门自动化测试,我打算按照【自动化基础篇】+【自动化实战篇】进行更新,理论与实战相结合。
Selenium自动化测试实战目录
一、什么是自动化测试?优缺点?适合自动化的测试场景?本文使用的测试工具?
二、selenuim相关基础知识
2.1 selenium简介
2.2 Selenium自动化测试环境搭建:firfox和chrome
2.3 使用selenium中的webdriver模块对浏览器进行操作
2.4 浏览器常用的操作
2.5 元素定位:是自动化测试核心部分
2.6 Xpath定位
2.7 Alter对话框处理—解决右击没办法用审查元素定位
一、什么是自动化测试?优缺点?适合自动化的测试场景?本文使用的测试工具?
1.1 自动化测试定义
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
通常,用例评审后,由人执行测试用例,将得到实际结果与预期结果相比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
1.2 自动化测试优缺点
优点:
- 对回归测试更方便。
- 可模拟真实情况。
- 减少人为的错误:
- 测试具有一致性和可复用性及测试用例的复用。
缺点:
- 人员技术要求高
- 需要额外的时间部署维护
- 无法像人一样进行主观判断,灵活处理各种异常情况
1.3 适合自动化的测试场景
- 任务测试明确,不会频繁变动
- 软件需求变更少
- 项目周期长,测试脚本可复用
1.4 本文使用的测试工具
- Selenium:是一个用于web应用程序测试的工具,
支持多平台、多浏览、多语言去实现自动化测试。
二、 selenuim相关基础知识
2.1 selenium简介:
- 开源免费软件;
- 支持主流浏览器:FireFox、Chrome、IE;
- 跨平台:windows、linux、Mac;
- 多语言:java、python、Ruby、Php、JS;
- 对web支持良好,丰富简单的API;
2.2 Selenium自动化测试环境搭建:firfox和chrome
2.2.1 安装Selenium
- 安装Python,并配置环境变量;
- 安装pip(目前安装python时自带pip就不用单独安装了);
- 安装Selenium:(直接命令安装:pip install selenium).
2.2.2 Firefox前端工具介绍
- fireBug:FirFox浏览器下的一套开发类插件;
- 作用:查看页面上的元素,从而根据其属性进行定位。
2.2.3 安装Chrome浏览器webdriver:
- 安装Chrome浏览器;
- chromedriver.exe 放到chrome浏览器安装目录的Application中,并把该目录放到计算机环境变量中;
- C:prog
2.3 使用selenium中的webdriver模块对浏览器进行操作
from selenium import webdriver #webdriver是浏览器驱动 b= webdriver.Firefox() #打开浏览器 b.get('http://www.baidu.com') #打开一个百度网页 ''' 判断url,title、找元素方式 ''' b.title,current_url #判断访问是否有效 ele = find_element_by_id/name() #使用id或者name方法定位元素 ele.clear() #清空值 ele.send_keys(arg) #输入值 b.back() #back
eg1:使用selenium打开firefox浏览器
from selenium import webdriver #webdriver是浏览器驱动 browser = webdriver.Firefox() #打开火狐浏览器 browser.get('http://www.baidu.com') #打开百度网页 browser.maximize_window() #网页最大化 browser.quit() #关闭浏览器
eg2:使用selenium打开Chrome浏览器
from selenium import webdriver #引入webdriver驱动 import time browser = webdriver.Chrome() #打开Chrome浏览器 browser.get('http://www.baidu.com') #打开百度网页 time.sleep(1) browser.title '百度一下你就知道' #测试打开的是否是百度网页 browser.find_element_by_link_text("登陆").click() #定位登陆并点击 browser.quit() #关闭浏览器
2.4 浏览器常用的操作
- 浏览器最大化:maximize_window()
- 设置浏览器宽、高:set_window_size(480,800)
- 控制浏览器前进:forward()
- 控制浏览器后退:back()
- 刷新浏览器:refresh()
- 打开一个网站:get("http://www.baidu.com")
- 关闭当前标签页:close()
- 关闭浏览器全部标签页:Quit()
- 获取当前所有窗口句柄:current_window_handle
2.5 元素定位:是自动化测试核心部分
元素定位的意义:
网站页面有输入框、按钮、文字链接、图片、页面底部的文字,以及左侧的下拉框等,自动化要做的就是模拟键盘和鼠标来操作这些元素,或点击,或输入,或鼠标悬停等。
2.5.1 常用的页面元素定位方法:
eg1:如下图所示,通过元素中带id或name的属性对元素进行定位
id或name是我们最常用的定位方式,因为大多数元素都有这个属性,通过这个属性使我们找一个页面上的属性变得相当容易。action.find_element_by_id("suggest-align").click #使用id定位元素 action.find_element_by_name("wd").click #使用name定位元素
2.5.2 元素操作方式
2.5.3 webdriver模块对浏览器进行操作:元素的定位
from selenium import webdriver #webdriver是浏览器驱动 b= webdriver.Firefox() #打开浏览器 b.get('http://www.baidu.com') #打开一个百度网页 b.find_element_by_link_text('企业直通车') #linktext元素定位方法 ele1 = b.find_element_by_partial_link_text('直通班')#partial link text元素定位方法 b.find_element_by_css_selector() #css selector元素定位方法 xpath定位文件:///....@id count() lacal-name() 定位元素
2.6 Xpath定位
- XML路径语言:用来确定XML文档中某部分位置的语言;
- Xpath用于在XML文档中通过元素和属性进行导航;
- Xpath是一个W3c标准;
- 对XML/HTML有一定的了解
Xpath节点类型:
Xpath:通过路径表达式从XML文档中选取节点或节点设置
2.7 Alter对话框处理—解决右击没办法用审查元素定位
引入alter对象方法原因:
前面所学的元素定位方法为:
find_element_by_xpath
find_element_by_cs_selector
find_element_by_name
但有的alter对话框,是用JS生成的对话框,右击没办法审查元素。因此使用Alter对象可以解决这个问题。
- 右击—>审查元素
- 然后根据xpath,cs,id等方法定位
find_element_by_xpath
find_element_by_cs_selector
find_element_by_name
但有的alter对话框,是用JS生成的对话框,右击没办法审查元素。因此使用Alter对象可以解决这个问题。
Alter对象:
from selenium import webdriver d = webdriver.Firefox() d.get(r'c:UserwtwDesktop estalter.html') #打开js写的html脚本 d.find_element_by_id('alter').click() #定位alter并点击 alter = d.switch_to_alter() #转切到alter,即会出现对话框 alter.text #编写alter中的文本 ‘I am an alter box’ alter.driver alter.accept #确认
三、写在最后
每天下班后写文章有点吃不消了 ,如果你们有发现错误或者任何技术问题,辛苦你们及时帮我提出并指正哦~我会接受批评并改正的~~~~
因为文章也是写给我自己看的,我是小菜鸡,也是一个边记录边学习的过程,把以前学习的内容做个汇总整理,也算是给以前的自己一个交代吧。
另外祝福大家都能顺利喜提offer