selenium+python+unittest实现自动化测试(入门篇)
本文主要讲解关于selenium自动化测试框架的入门知识点,教大家如何搭建selenium自动化测试环境,如何用selenium+python+unittest实现web页面的自动化测试,先来看看selenium、unittest是什么。
一、selenium、unittest概念
Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架。它是一款用于运行端到端功能测试的超强工具。您可以使用多个编程语言编写测试,并且 Selenium 能够在一个或多个浏览器中执行这些测试,同时支持所有基于web 的管理任务自动化。
unittest是单元测试框架,不仅适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,断言,其实就是对测试结果进行校验,每一个测试用例都有一个期望结果,实际结果跟期望结果不一致,说明执行测试用例不通过,自动化测试也一样,需要对测试结果进行校验,校验成功,说明用例已经通过,最终生成测试结果。
二、环境搭建:
安装python:
下载链接:https://www.python.org/getit/
安装python编译器pycharm
http://www.jetbrains.com/pycharm/download/index.html#section=windows
安装selenium模块:
win+r 输入cmd
python -m pip install selenium
假如用的是Chrome浏览器,还需要下载chromedriver.exe,chromedriver版本与支持的Chrome浏览器版本对应如下:
下载链接:http://npm.taobao.org/mirrors/chromedriver/
下载完成后,拷贝chromedriver.exe到Chrome浏览器安装目录下:
随后配置环境变量:
三、编写一个简单的自动化测试脚本
好了,环境已经搭建好了,我们开始写测试用例,来看一下对百度页面写一个简单的自动化测试脚本
#coding=utf-8
#百度demo
from selenium import webdriver
import time
#单元测试框架,使用该模块,我们可以对用例进行组织和运行,例如如下的BaiduTestCase类继承unittest.TestCase,该类执行会把test开头的方法当成一个测试用例去执行
import unittest
class BaiduTestCase(unittest.TestCase):
    def setUp(self):
        print('开始执行测试用例:')
        url = 'https://www.baidu.com'
        self.driver = webdriver.Chrome()#选择谷歌浏览器
        self.driver.get(url)#打开百度页面
    def test_bubutton(self):
    	self.driver.find_element_by_id('kw').clear()
        self.driver.find_element_by_id('kw').send_keys('软件测试')#搜索框输入内容
        self.driver.find_element_by_id('su').click()#点击百度按钮
        time.sleep(2)
        self.driver.save_screenshot('D:/baidu.png')#截图
    def tearDown(self):
        print('一条用例执行完成。')
        self.driver.quit()#退出浏览器
if __name__=='__main__':
    unittest.main()
通过上面的一段代码我们就可以实现跳转到百度页面,输入‘软件测试’,点击百度按钮并且搜索,设置停留在搜索结果页面2秒钟,随后截图放到设置的路径,是不是觉得挺简单的呢,但是想要学习更多的自动化测试知识,还是需要更多地熟悉selenium、unittest的api。
三、熟悉一些常用的元素定位方法、操作方法
常用元素定位方法:
1、id定位: find_element_by_id()
举例:进入浏览器,按f12,定位元素id如下如步骤:
2、name定位: find_element_by_name()
3、class定位:find_element_by_class_name()
4、link定位:find_element_by_link_text()
5、partial_link定位:find_element_by_partial_link_text()
6、xpath定位:find_element_by_xpath()
7、CSS定位:find_element_by_css_selector()
操作方法:
clear 清除元素的内容
send_keys 模拟按键输入
click 点击元素
submit 提交表单
size 获取元素的尺寸
text 获取元素的文本
get_attribute(name) 获取属性值
location 获取元素坐标,先找到要获取的元素,再调用该方法
page_source 返回页面源码
driver.title 返回页面标题
current_url 获取当前页面的URL
is_displayed() 设置该元素是否可见
is_enabled() 判断元素是否被使用
is_selected() 判断元素是否被选中
tag_name 返回元素的tagName
context_click(elem) 右击鼠标点击元素elem,另存为等行为
double_click(elem) 双击鼠标点击元素elem,地图web可实现放大功能
drag_and_drop(source,target) 拖动鼠标,源元素按下左键移动至目标元素释放
move_to_element(elem) 鼠标移动到一个元素上
click_and_hold(elem) 按下鼠标左键在一个元素上
perform() 在通过调用该函数执行ActionChains中存储行为
send_keys(Keys.ENTER) 按下回车键
send_keys(Keys.TAB) 按下Tab制表键
send_keys(Keys.SPACE) 按下空格键space
send_keys(Kyes.ESCAPE) 按下回退键Esc
send_keys(Keys.BACK_SPACE) 按下删除键BackSpace
send_keys(Keys.SHIFT) 按下shift键
send_keys(Keys.CONTROL) 按下Ctrl键
send_keys(Keys.ARROW_DOWN) 按下鼠标光标向下按键
send_keys(Keys.CONTROL,‘a’) 组合键全选Ctrl+A
send_keys(Keys.CONTROL,‘c’) 组合键复制Ctrl+C
send_keys(Keys.CONTROL,‘x’) 组合键剪切Ctrl+X
send_keys(Keys.CONTROL,‘v’) 组合键粘贴Ctrl+V
unittest常用断言方法:
assertLocation(判断当前是在正确的页面)、
assertTitle(检查当前页面的 title 是否正确)、
assertValue(检查 input 的值, checkbox 或 radio,有值为”on”无为”off”)、
 assertSelected(检查 select 的下拉菜单中选中是否正确)、
 assertSelectedOptions(检查下拉菜单中的选项的是否正确)、
 assertText(检查指定元素的文本)、
 assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、
 assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、
 assertAttribute(检查当前指定元素的属性的值)、
 assertTable(检查 table 里的某个 cell 中的值)、
 assertEditable(检查指定的 input 是否可以编辑)、
 assertNotEditable(检查指定的 input 是否不可以编辑)、
 assertAlert(检查是否有产生带指定 message 的 alert 对话框)、
 verifyTitle验证预期的页面标题。
 verifyTextPresent验证预期的文本是否在页面上的某个位置。
 verifyElementPresent验证预期的 UI 元素,它的 HTML 标签的定义,是否在当前网页上。
 verifyText核实预期的文本和相应的 HTML 标签是否都存在于页面上。
 verifyTable验证表的预期内容。
 waitForPageToLoad 暂停执行,直到预期的新的页面加载
selenium+python+unittest实现自动化测试(入门篇)的更多相关文章
- 学习笔记之盘一盘 Python 系列 1 & 2 - 入门篇
		
盘一盘 Python 系列 1 & 2 - 入门篇 https://mp.weixin.qq.com/s?__biz=MzIzMjY0MjE1MA==&mid=2247486473&a ...
 - 基于Selenium+Python的web自动化测试框架
		
一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...
 - 学习python之路_入门篇A
		
偶尔经同事的介绍进入了金角大王的博客里,看到大王编写的文章都是关于python编程的,由于自己一直也是做软件测试方面的工作,也一直想往自动化测试方面发展,了解到利用python可以进行自动化测试操作, ...
 - selenium+python—实现基本自动化测试
		
安装selenium 打开命令控制符输入:pip install -U selenium 火狐浏览器安装firebug:www.firebug.com,调试所有网站语言,调试功能 Selenium I ...
 - python学习之路入门篇
		
本文是up学习python过程中遇到的一些问题及总结归纳,本小节是入门篇. python基本语法 循环.分支不多赘述. 模块:一个.py文件就是一个模块. 文件和异常 模式 含义解释 “r” 读模式 ...
 - python自动化测试入门篇-jemter连接mysql数据库
		
jmeter对数据库的操作主要包括以下几个步骤:1.导入mysqlde jdbc的jar包:2.创建数据库连接配置:3.线程组添加jdbc request;4.启动按钮,添加查看结果树 一.准备好驱动 ...
 - python自动化测试入门篇-jemter参数化
		
一.Jmeter参数化 1.使用用户自定义变量 用户定义的变量,引用方式:${定义参数名称};例如定义一个变量IP,使用它的时候用 ${IP}. 添加一个 User Defined Variables ...
 - python自动化测试入门篇-jemter
		
接口测试基础-jemter 接口文档地址:http://doc.nnzhp.cn 使用jmeter实现简单的http request的接口测试 一.get获取学生信息接口 第一步:新建一个Thread ...
 - python自动化测试入门篇-postman
		
接口测试基础-postman 常用的接口有两种:webservice接口和http api接口. Webservice接口是走soap协议通过http传输,请求报文和返回报文都是xml格式. http ...
 
随机推荐
- OWIN时遇到的问题
			
1.在需要授权时如何获得需要授权的应用clientId? 除了从Request.QueryString("client_id")中获得还有别的方法吗?例如通过OWIN中间件的某个属 ...
 - 字节流和字符流的read方法
			
字节流和字符流的read方法 public class Test { public void fileOutput() throws Exception { File file = new File( ...
 - 直接打印类,调用toString()方法
			
直接打印类,调用的是继承的Object类的toString()方法,Object类的toString()方法是这样实现的:getClass().getName() + "@" + ...
 - 为什么html表单用post提交后,提交页面是空白
			
为什么html表单用post提交后,提交页面是空白? 因为post提交就应该用doPost()方法处理数据
 - DFT计算过程详解
			
DFT计算过程详解 平时工作中,我们在计算傅里叶变换时,通常会直接调用Matlab中的FFT函数,或者是其他编程语言中已经为我们封装好的函数,很少去探究具体的计算过程,本文以一个具体的例子,向你一步一 ...
 - 线性回归-Fork
			
线性回归 主要内容包括: 线性回归的基本要素 线性回归模型从零开始的实现 线性回归模型使用pytorch的简洁实现 线性回归的基本要素 模型 为了简单起见,这里我们假设价格只取决于房屋状况的两个因 ...
 - D. Mahmoud and Ehab and another array construction task 因子分界模板+贪心+数学
			
D. Mahmoud and Ehab and another array construction task 因子分解模板 题意 给出一个原序列a 找出一个字典序大于a的序列b,使得任意 \(i!= ...
 - 【做题笔记】UVA11988破损的键盘
			
本题可以在洛谷评测,但需要绑定账号 首先解释一下:Home键的作用是把光标移动,End键的作用是返回上次按Home键的地方 考虑朴素做法:输入为[时下一次插入在数组最前端,然后元素整体向后:同时令 l ...
 - 如何在IntelliJ Idea中同时启动不同端口的两个实例
			
在SpringCloud开发过程中需要在一个项目中启用不同的端口,我使用的工具是IDEA 步骤1 创建SpringBoot工程 步骤2 在配置文件中添加如下配置: spring.application ...
 - 如何处理python异常
			
1.python异常有那些? window的机器如果安装了python,则直接可以在idle中查看,打开idle,按F1即可打开帮助文档,按如下路径即可查看,也可以去python官网查看这里不说明了百 ...