本文主要讲解关于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 暂停执行,直到预期的新的页面加载

最新文章

  1. windows 下 新建 点开头的文件和文件夹
  2. adb push命令的使用
  3. X86 Socket 通信
  4. hdu 2844 多重背包coins
  5. MySQL降权:MySQL以Guests帐户启动设置方法
  6. UESTC 881 神秘绑架案 --二维DP
  7. android 为应用程序创建桌面快捷方式技巧分享
  8. Python 描述符(descriptor) 杂记
  9. Java Bean validation specification...
  10. 【转载】HBase 数据库检索性能优化策略
  11. 解决Agent admitted failure to sign using the kye with ssh
  12. Android中activity保存数据和状态在哪个方法实现
  13. Python-socketserver实现并发- 源码分析
  14. js+css3+HTML5拖动滑块(type="range")改变值
  15. Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness
  16. 在Centos7下搭建Git服务器
  17. 微信编辑器 wxEditor 最牛逼的富文本编辑器
  18. excel技巧--一键求和
  19. 最优化方法:共轭梯度法(Conjugate Gradient)
  20. 【转载】一个Sqrt函数引发的血案

热门文章

  1. git中全局设置用户名、邮箱
  2. GitHub的安装和第一次上传本地项目
  3. i5+GT730+B85安装OSX10.10.5 (Yosemite Install(14F27).cdr)
  4. 每天进步一点点------Nios II 的Run as hardware 中报错:Downloading ELF Process failed
  5. Bootstrap入门(2)表格
  6. vue 无法热替换/热更新
  7. Codeforces Round #598 (Div. 3) D. Binary String Minimizing
  8. leetcode 25. K 个一组翻转链表
  9. 前端知识之html
  10. Spring Cloud netflix feign【服务间通信】