Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作

一、什么样项目适合做web自动化

        1.软件需求不会频繁的变更。
        2.项目周期比较长。
        3.自动化的脚本能够重复利用。
介入点:第一个版本的核心功能确认以后,系统测试。
自动化的实施过程:
        1.可行性分析
        2.框架的选择(selenum,rf,....),框架的搭建。
        3.需求分析
        4.计划
        5.测试用例的设计(要么从功能测试抽取,要么重新写)
        6.编码的过程
        7.无人值守
        8.提交报告
        9.脚本维护

二、Python+Selenium环境搭建

        python+selenium自动化测试环境包括四个部分:python、selenium、chrome谷歌浏览器、chrome谷歌浏览器驱动。其中浏览器也可以是火狐,IE等。目前自动化的主流浏览器还是chrome谷歌浏览器

(1)python的安装

目前测试行业应用最广的编程语言当属Python为首。python现在主流是3.7的版本。安装很简单,在官网(官网地址:https://www.python.org)选择对应系统的版本直接下载,然后双击安装即可,安装路径可自定义,不是一定非要安装在C盘,但请尽可能避免中文路径。

Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作_第1张图片

 python安装包后,需要配置环境变量,其实在3.7的安装过程中,第一个界面有一个“add python to path”的选项可以勾选(大概是这个名字)。勾选之后会自动将python添加到系统环境变量Path中。当然你也可以选择手动添加,添加方法如下:

我的电脑右键选择属性–>高级系统设置–>环境变量–>环境变量–>系统变量:找到path变量并修改,在Path路径的最前面加入:C:\Python37;C:\Python37\Scripts; (如果你的python安装在其他路径请做相应的改动,笔者这里是默认路径)

特别要注意:很多新手会把Path中原来的内容删除掉,笔者提醒一下这个绝对不能这样做,慎重!慎重!慎重!

安装之后,运行CMD窗口,输入python指令,用于校验python是否安装成功。如下图表示成功!

Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作_第2张图片

另附上python开发工具PyCharm的官方下载地址:http://www.jetbrains.com/pycharm/download/

(2)selenium的安装

selenium可以通过pip命令进行安装,安装方法如下:

  1. 打开cmd窗口

  2. 输入:pip install selenium

  3. 等待cmd窗口提示successful,则selenium安装成功,如中途中断了继续输入pip install selenium重新安装,不影响!

(3)chrome浏览器

目前网上谷歌浏览器下载的坑太多了,很多网站做得跟官网太像了。一不小心就会入坑,这里笔者提供Chrome官网的下载地址:

Chrome官网:https://www.google.cn/chrome/

下载完成后双击会自动安装。等待安装完成即可。

(4)安装chrome浏览器驱动

当Selenium提出了WebDriver的概念之后,它提供了利用浏览器原生的接口,封装成一套更加面向对象的Selenium WebDriver API,直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件)。

由于使用的是浏览器原生的接口,速度大大提高,而且调用的稳定性交给了浏览器厂商本身,显然是更加科学。然而带来的一些副作用就是,不同的浏览器厂商,对Web元素的操作和呈现多少会有一些差异,这就直接导致了Selenium WebDriver要分浏览器厂商不同,而提供不同的实现。例如Firefox就有专门的geckoDriver驱动,Chrome就有专门的Chrome驱动等。

这里特别要注意:

chrome浏览器驱动必须和安装的chrome浏览器版本对应。那么如何保证对应呢?

先检查chrome浏览器的版本:点击chrome浏览器右上角的三个点–>帮助–>关于Google Chrome,如下图所示:

Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作_第3张图片

2.chrome浏览器驱动下载地址:

Chromedriver驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

找到和上图chrome版本最接近的版本:上图为:78.0.3904.108,所以这里驱动选择:

Web自动化测试 —— 测试环境搭建 (Selenium+Python)及视频操作_第4张图片

 下载完成后:把chrome驱动包放入:C:\python37 目录下 (这个是必须的)

三、八大元素定位

面试题:如果元素定位不到,可能是什么原因?
        1.元素没有加载完成。
        2.元素在iframe或者frame框架里面。
        3.元素不可用(disabled),只读(readonly),不可见(hidden,
style="dispaly:none;")
        4.动态属性或者动态的DIV层。
id name link_text partail_link_text,xpath,css, class_name,tag_name
#driver.find_element(By.ID,"kw").send_keys("码尚学院")
#driver.find_element(By.NAME,"wd").send_keys("码尚学院")
#driver.find_element(By.LINK_TEXT,"新闻").click()
driver.find_element(By.PARTIAL_LINK_TEXT,"新").click()
前提:定位元素或者属性必须唯一。(调试:Ctrl+F)
xpath:
面试题:在xpath元素定位中/和//的区别是什么?
/:绝对路径:从html网页的第一个标签开始,然后慢慢的往下找,直到找到元素为止。
/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input 完全不用
//:相对路径:从html网页中的任意一个唯一的标签开始,直到找到元素为止。
//input
        相对路径://form/span/input
        相对路径+索引定位://form/span[1]/input
        相对路径+属性定位:
                //input[@autocomplete='off']         单一属性
                //input[@autocomplete='off' and @id='kw']         多个属性
相对路径+部分属性定位:
以什么开头://input[starts-with(@autocomplete,'of')]
以什么结尾://input[substring(@autocomplete,2)='ff'] 表示从第2个字符开始截取到最后
包括(最多)://input[contains(@autocomplete,'ff')]
相对路径+通配符:
        //*[@*="kw"]
        复制Xpath:我们从来不用。
                1.这种方式不一定准确。
                2.性能很低。
                     相对路径+文本定位:
                        //span[text()='按图片搜索']
css:
        相对路径,绝对路径,ID和Class,属性和属性组合定位,部分属性定位,子节点定位,
兄弟节点定位。

四、项目实战

unittest管理测试用例的规则:
        1.必须继承:unittest.TestCase
        2.导包:import unittest
        3.写一个以test_开头的测试用例。
为啥有没有main都没关系,都可以执行。原因是:unittest有两种运行方式,并且默认的还
是第一种运行方式: (巨坑)
1.命令行的运行方式(默认)
        python -m unittest 模块名.py
        python -m unittest 模块名.类名.方法名
2.main主函数运行方式(非默认)
main方式。
frameset(框架集,直接忽略)
frame(框架)/iframe(子框架)
导包的快捷键:Alt+Enter
定位一组元素:
windows自带的弹窗:
        alert 只有一个确定按钮
        confirm 有一个确定和一个取消按钮
        prompt 除了确定和取消按钮外还有一个输入框。
        都是:driver.switch_to.alert

五、设计模式(封装)

PO模式+关键字驱动模式
PO模式:page object model 页面对象模型。把项目中的页面封装成一个一个的类,一个
页面对应一个类。那么通过实例化这个类的对象,去调用这个类里面的属性和方法。它是通
过页面来分类。
好处:
1.线性脚本的问题。
2.代码不能重复利用的问题。
3.后期的的代码维护问题
简历的栗子:
京东:仓库(日用品,文具,电器,分类保存。),
PO分三层:
1.基础层:主要放封装的selenium原生的基础方法。
2.页面对象层:pageobject,主要存放页面的元素定位信息和元素的动作。
3.测试用例层:存放测试用例以及测试数据。
关系:2.页面对象层继承1.基础层,3.测试用例层调用页面对象的方法。

六、引入Pytest(解耦合)

默认的测试用例的运行规则:
1.测试模块必须以test_开头或者_test结尾。
2.测试类必须以Test
3.测试用例必须以test_开头
pytest的运行的方式有三种
1.命令行
2.main方法
3.通过pytest.ini文件来运行。
随意的切换。unitest/pytest都必须要灵活的掌握并且灵活的应用。

七、pytest结合allure-pytest插件生成漂亮的测试报告

1.下载allure并且解压,解压后还需要设置环境变量。
官网下载地址:https://github.com/allure-framework/allure2/releases
解压到任意盘
配置环境变量:把E:\allure-2.13.7\bin配置到path路径。
2.查找allure-pytest插件
直接在pycharm里面安装。
pip install allure-pytest
验证:allure --version
3.生成json格式的临时报告文件。
在pytest.ini里面的addopts加入--alluredir ./temp
4.生成allure级别的HTML格式的报告
os.system('allure generate ./temp -o ./reports --clean')

八、实现企业级的能够落地实施的web自动化框架以及实现报告的定制

报告的定制:logo的定制,模块的定制,用例的定制,严重程度,错误截图,用例描述, 参数化。日志监控。
编程语言:python,java
设计模块:PO,关键字驱动
用例管理:精通unitetst,pytest
数据驱动:ddt,pytest.mark。parametrize
二次封装:excel,yaml,ini,数据库封装
日志监控:logging
异常处理:try/except
jenkins:持续集成和无人值守
分布式运行:Grid
前端:html和js

九、Pytest的数据驱动@pytest.mark.parametrize()+Excel实现数据 驱动

方法详情:
@pytest.mark.parametrize(args_name,args_value)
args_name:参数名
args_value:参数值(list列表,tuple元祖,字典列表,字典元祖)
举例:
@pytest.mark.parametrize("caseinto",["百里","依然","星瑶"])
def test_01(self,caseinto):
print(caseinto)

 举例:

@pytest.mark.parametrize("name,age",[["百里","12"],["依然","14"]])
def test_01(self,name,age):
print(name,age)

你可能感兴趣的:(自动化测试,接口自动化测试,软件测试,软件测试,Python,经验分享,测试人生,面试)