您的位置:首页 > 编程语言 > Python开发

python+selenium+nose web简单自动化测试框架

2014-09-07 13:08 1001 查看
os:win7

python:3.3.2

selenium:selenium-2.42.1-py

安装:直接通过setuptools安装selenium就好啦。

selenium2主推的webdriver,是通过调用相应的浏览器驱动来完成浏览器控制的,因此需要安装相应的浏览器驱动。

selenium是一个测试Web应用程序的工具,开源,免费,支持多种浏览器,FireFox,Chrome,IE,Opera,safari,android等,支持python语言,对web页面有较好的支持。

前期的环境搭建工作完成之后,就开始web测试之旅吧。

创建一个.py文件,我们命名为PythonPlusSelenium.py

#coding = utf-8

from selenium import webdriver

driver = webdriver.Firefox()

driver.get("http://www.baidu.com")

F5运行,就可以看见火狐浏览器启动了,然后就看到在地址栏好像有人输入http://www.baidu.com一样,紧接着就看到baidu主页打开了。太自动化了,唯一不足的是速度有点慢,呵呵。

1.下面列出浏览器最基本也最简单的几个操作。

driver.quit() 退出了浏览器

driver.maximize_window() 将浏览器最大化显示

driver.set_window_size(1024,768) 设置浏览器显示的宽、高

driver.back() 模拟浏览器的后退功能退回到上一个页面

driver.forward() 前进

2.对鼠标操作的支持,对鼠标操作的支持都放在了webdriver.common.action_chains里面。

context_click() 右击

double_click() 双击

drag_and_drop() 拖动

move_to_element() 移动到某个元素上

click_and_hold() 左击

3.对键盘输入的支持

4.对下拉框的处理

5.对分页的支持

6.对滚动条的支持

7.对弹框的支持

selenium的具体API和支持的特性我就不一一介绍,很多文档有很详细的介绍。

由于我们前面介绍过python常见的几种测试框架doctest,unittest,nose等,那我们可以将这些测试框架引入到我们的python+selenium的自动化测试中来,我推荐使用nose。

以163邮箱登陆界面为例来进行测试用例编写。只考虑正确用户名+正确密码,正确用户名+错误密码,错误用户名+正确密码这几种情况。

首先导入selenium webdriver模块。导入unittest

我们将打开Firefox浏览器已经进入到163邮箱主页放置在setUp,将关闭浏览器放在tearDown。

我们定义三个测试用例 testlogin,testWrongPwdlogin和testWrongUserlogin。

首先我们定位到用户名的输入框find_element_by_name("username"),利用clear将原来有可能存在的用户名清除并发送我们要输入的用户名到输入框send_keys(UserName)

其次我们定位到密码输入框find_element_by_name("password"),并发送我们要输入的密码到输入框send_keys(PassWord)

找到登陆框find_element_by_id("loginBtn"),并提交我们要输入的信息。

下一步就是是否成功登陆163邮箱的判定了,通过查找有用户名+@163.com的信息,如果有,则登陆成功。通过查找“账号或密码错误”字段来判断登陆失败的。

testPythonPlusSele.py

from selenium import webdriver

import unittest

import time

class Mail163(unittest.TestCase):

def setUp(self):

self.driver = webdriver.Firefox()

self.driver.get("http://mail.163.com/")

def testlogin(self):

self.driver.find_element_by_name("username").clear()

UserName = "*****"

PassWord = "*****l"

self.driver.find_element_by_name("username").send_keys(UserName)

self.driver.find_element_by_name("password").send_keys(PassWord)

self.driver.find_element_by_id("loginBtn").submit()

ID = "_account_"+UserName+"@163.com"

Account = self.driver.find_elements_by_id(ID)

self.assertTrue(Account)

def testWrongPwdlogin(self):

self.driver.get("http://mail.163.com/")

self.driver.find_element_by_name("username").clear()

UserName = "*****"

PassWord = "*****"

self.driver.find_element_by_name("username").send_keys(UserName)

self.driver.find_element_by_name("password").send_keys(PassWord)

self.driver.find_element_by_id("loginBtn").submit()

pp = self.driver.find_element_by_xpath("/html/body/section/div[3]/div[2]/div[1]/p")

WrongInfo = pp.text

self.assertTrue("账号或密码错误" == WrongInfo)

def testWrongUserlogin(self):

self.driver.get("http://mail.163.com/")

self.driver.find_element_by_name("username").clear()

UserName = "*****"

PassWord = "*****"

self.driver.find_element_by_name("username").send_keys(UserName)

self.driver.find_element_by_name("password").send_keys(PassWord)

self.driver.find_element_by_id("loginBtn").submit()

pp = self.driver.find_element_by_xpath("/html/body/section/div[3]/div[2]/div[1]/p")

WrongInfo = pp.text

self.assertTrue("账号或密码错误" == WrongInfo)

def tearDown(self):

self.driver.quit()

在命令行上运行nosetests testPythonPlusSele, 就可以看到三个测试用例开始执行啦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: