基于Selenium2与Python自动化测试环境搭建

简介:

selenium 是一个web的自动化测试工具,不少学习功能自动化的同学开始首选selenium ,相因为它相比QTP有诸多有点:

*  免费,也不用再为破解QTP而大伤脑筋

*  小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G 的程序。

*  这也是最重要的一点,不管你以前更熟悉C、 java、ruby、python、或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS

*  支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome

*  支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。

工具选择 :

Python版本: 选择2.7.2, Why? 目前大部分第三方库和工具对2.7都有简单的安装包,不需要自己做太多处理,比2.6内置了一些包,不需要再安装; Python3.x不支持Se2.0

Selenium版本:选择2.0+,Why? 因为从2.0开始,Se已经和WebDriver集成在一起了,WebDriver提供了非常多的API和自动化测试处理方法。

脚本开发:Eclipse(JDK:选择1.6版本),其中插件选择:PyDev

代码库管理:SVN,使用SVN对整个框架下的内容进行版本管理

环境搭建步骤(Windows7,64位)

第一步:安装Python

根据下面的地址,直接一键安装,全部默认方式。

下载地址:http://www.python.org/ftp/python/2.7.2/python-2.7.2.msi

然后设置Python的环境变量, Path:“C:\Python27;”

第二步:安装Python的SetupTools

其实SetupTools就是一个帮助你安装第三方工具包的增强工具软件,根据下面的地址下载,然后一键安装。下载地址:

http://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20

备注:

安装setuptools的时候,不能再注册表中识别出来python2.7

在网上找了方法,仅作笔记,供下次使用方法:

新建一个register.py 文件,把一下代码贴进去,保存(C盘)

#

# script to register Python 2.0 or later for use with win32all

# and other extensions that require Python registry settings

#

# written by Joakim Loew for Secret Labs AB / PythonWare

#

# source:

# http://www.pythonware.com/products/works/articles/regpy20.htm

#

# modified by Valentine Gogichashvili as described in http://www.mail-archive.com/distutils-sig@python.org/msg10512.html

import sys

from _winreg import *

# tweak as necessary

version = sys.version[:3]

installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)

installkey = "InstallPath"

pythonkey = "PythonPath"

pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (

installpath, installpath, installpath

)

def RegisterPy():

try:

reg = OpenKey(HKEY_CURRENT_USER, regpath)

except EnvironmentError as e:

try:

reg = CreateKey(HKEY_CURRENT_USER, regpath)

SetValue(reg, installkey, REG_SZ, installpath)

SetValue(reg, pythonkey, REG_SZ, pythonpath)

CloseKey(reg)

except:

print "*** Unable to register!"

return

print "--- Python", version, "is now registered!"

return

if (QueryValue(reg, installkey) == installpath and

QueryValue(reg, pythonkey) == pythonpath):

CloseKey(reg)

print "=== Python", version, "is already registered!"

return

CloseKey(reg)

print "*** Unable to register!"

print "*** You probably have another Python installation!"

if __name__ == "__main__":

RegisterPy()

输入以下命令(register.py 存放在 C盘底下)

显示“python 2.7 is already registered”

再安装setuptools的时候,就能自动识别出来python2.7了。

win7是 64的原因,在安装python(32位)时,如果选择只为当前用户,以上问题是不会出现的,如果选择所有用户,那就用上面的方法解决吧。

代码来自:http://tech.valgog.com/2010/01/after-installing-64-bit-windows-7-at.html

第三步:安装Python的包管理工具 pip—有点类似SetupTools ,但是比它强大

利用第二步安装的SetupTools进行安装,打开DOS界面,进入到目录:

C:\Python27\Scripts, 然后敲入命令: easy_install pip, 等待完成就OK。

如果联网下载失败的话,则:

解压pip-1.5.5.tar.gz,将解压文件放到C:\下,在DOS环境进入C:\pip-1.5.5,执行命令:python setup.py install

请注意安装路径。默认在:C:\Python27\Scripts。

第四步:安装基于Python的Selenium包

打开DOS界面,进入到目录: C:\Python27\Scripts,

然后敲入命令: pip install selenium or pip install –U selenium,其中:里面一些警告可以暂时不用管,如果想找到原因,Pls 百度 or 谷歌 一下!

注:关于网上的有一段环境搭建步骤描述,那个是指支持Se1.0版本的,2.0版本不需要那个启动server-jar文件 (2.21.0版本需要这个服务器)

第五步:验证Selenium安装是否成功

在记事本中编写下面的代码:(保存为 pytest.py,然后直接运行即可!)

from selenium import webdriver

browser = webdriver.Firefox()             # Get local session of

browser.get("http://www.yahoo.com")      # Load page

assert "Yahoo" in browser.title

browser.close()

如果代码运行成功,就表示Selenium安装成功了! Very Good!

 

第六步:安装webdriver

安装Chrome driver

chrome driver的下载地址在这里

1、 下载解压,你会得到一个 chromedriver.exe文件(我点开,运行提示started on prot 9515 ,这是干嘛的?端口9515被占了?中间折腾了半天),后来才知道需要把这家伙放到chrome的安装目录下...\Google\Chrome\Application\ ,然后设置path环境变量,把chrome的安装目录(我的:C:\Program Files (x86)\Google\Chrome\Application):

2、 然后解压chromedriver.exe到Python的安装目录下,如C:\Python27。

3、 验证脚本如下:

# coding = utf-8

from selenium import webdriver

driver = webdriver.Chrome()

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

print driver.title

driver.quit()

又报了个错:

"ChromeDriver executable needs to be available in the path. "

selenium.common.exceptions.WebDriverException: Message: ChromeDriver executable

needs to be available in the path. Please download from http://chromedriver.stor

age.googleapis.com/index.html and read up at http://code.google.com/p/selenium/w

iki/ChromeDriver

这个是path环境变量未设置成功导致。如果配了系统环境变量重启后也没用还报这个错,用下面这种方法设环境变量就ok啦:

import os

from selenium import webdriver

chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver

driver =  webdriver.Chrome(chromedriver)

driver.get("http://*.com")

driver.quit()

还报个错:

Chrome version must be >= 27.0.1453.0\n  (Driver info: chromedriver=2.0,platform=Windows NT 5.1 SP3 x86)

说我chrome的版本没有大于27.0.1453.0 ,这个好办,更新到最新版本即可。

安装IE driver

ie driver的下载地址在这里,记得根据自己机器的操作系统版本来下载相应的driver。

1、
     复制IEDriverServer.exe到C:\Python27 ;
     将IEDriverServer.exe文件放到IE的安装目录下。

2、配置IE的保护模式

如果要使用webdriver启动IE的话,那么就需要配置IE的保护模式了。

把IE里的保护模式都选上或都勾掉就可以了。(更改IE的internet选项->安全,将Internet/本地Internet/受信任的站定/受限制的站点中的启用保护模式全部去掉勾,或者全部勾上。)

3、验证脚本如下:

# coding = utf-8

from selenium import webdriver

iedriver = "C:\Program Files (x86)\Internet Explorer\IEDriverServer.exe"

driver = webdriver.Ie(iedriver)

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

print driver.title

driver.quit()

报了个错:

raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.WebDriverException: Message: Unexpected error launchi

ng Internet Explorer. Protected Mode settings are not the same for all zones. En

able Protected Mode must be set to the same value (enabled or disabled) for all

zones.

这个原因是微软自IE7以后加入了Protected Mode的概念,此时把IE里的保护模式都选上或都勾掉就可以了。

又出现一个错误:

raise exception_class(message, screen, stacktrace)

selenium.common.exceptions.WebDriverException: Message: Unexpected error launchi

ng Internet Explorer. Browser zoom level was set to 129%. It should be set to 10

0%

这个是由于浏览器缩放导致的问题,这个可能是你无意中按住了Ctrl键且滚动了鼠标滚轮,或者是你不小心按住CTRL键时碰到NB触摸板块的滚动功能了。按住Ctrl键不放,再滚动鼠标中键,查看状态栏右边显示为“100%”即可。

安装firefox webdirver

Selenium IDE是Firefox的一个插件,是可以进行脚本录制以及案例转换,所以Selenium IDE+Firebug会成为你日后写测试案例的两大助手

1、将selenium-ide-1.6.0.xpi拖进firefox浏览器,即开始安装。 Firefox浏览器选装firebug、FirePath插件。

或者直接在火狐的“附加组件”中,搜索Selenium IDE(Selenium IDE Button 1.2.0)和firebug(firebug-2.0.7)下载安装即可

2、问题:firefox浏览器不能安装插件,提示services.addons.mozilla.org:443 使用了无效的安全证书。

正常情况下不会这样 应该是用了代理或者是系统时间不对。看一下有没有添加证书的选项

3、验证脚本如下:

# coding = utf-8

from selenium import webdriver

driver = webdriver.Firefox()

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

print driver.title

driver.quit()

备注:

构建Python+Selenium2自动化测试环境完成之后,就需要测试支持python的selenium的版本是否都支持在不同浏览器上运行,当前我们分别在三个最通用的浏览器上通过脚本来测试。

1、在IE浏览器上运行测试脚本,首先需要下载IEDriverServer.exe,放在IE浏览器的安装目录且同级目录下,脚本如下:

import os

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

iedriver = "C:\Program Files\Internet Explorer\IEDriverServer.exe"

os.environ["webdriver.ie.driver"] = iedriver

driver = webdriver.Ie(iedriver)

driver.get("http://www.python.org")

assert "Python" in driver.title

elem = driver.find_element_by_name("q")

elem.send_keys("selenium")

elem.send_keys(Keys.RETURN)

assert "Google" in driver.title

driver.close()

driver.quit()

  2、在Chrome浏览器上运行测试脚本,首先需要下载ChromeDriver.exe,放在Chrome浏览器的安装目录且同级目录下,脚本如下:

import os

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

chromedriver = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver

driver = webdriver.Chrome(chromedriver)

driver.get("http://www.python.org")

assert "Python" in driver.title

elem = driver.find_element_by_name("q")

elem.send_keys("selenium")

elem.send_keys(Keys.RETURN)

assert "Google" in driver.title

driver.close()

driver.quit()

  3、在Firefox浏览器上运行测试脚本,具体如下:

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()

driver.get("http://www.python.org")

assert "Python" in driver.title

elem = driver.find_element_by_name("q")

elem.send_keys("selenium")

elem.send_keys(Keys.RETURN)

assert "Google" in driver.title

driver.close()

driver.quit()

总结:通过以上三个不同浏览器上的测试,说明selenium在python中的运用于其Java版本都是一样。由于Firefox是默认安装 路径,webdriver可以正常访问找到他,如果非系统默认安装路径,则需要跟IE和Chrome一样来设置driver路径。

 第六步:python的开发环境配置

1、PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完 成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

2、Eclipse-PyDev插件

关于这个插件的安装,就不多说了!网上很多!可以看看下面的链接:

http://www.cnblogs.com/Bonker/p/3584707.html

在 Eclipse 菜单栏中,选择 Window > Preferences > Pydev > Interpreter - (Python/Jython),在这里配置 Python/Jython 解释器,下面以 Python 为例介绍如何配置。

首先需要添加已安装的解释器。这里,Python 安装在 C:\Python27 路径下。单击 New,选择 Python 解释器 python.exe,打开后显示出一个包含很多复选框的窗口,选择需要加入系统 PYTHONPATH 的路径,单击 Ok。

接下来,检查一下配置的结果是否正确。

在 System PYTHONPATH 里,检查是否包含配置过程中加入的那些路径。这里列出了所有的系统所需的库文件夹。

另外,在 Forced builtin libs 里,列出了 Python 的内置库。对于 Python 而言,这样的内置库大约有50个,而对于 Jython 来说,则有30个左右。

这样,Python 解释器就配置好了。

 第步:kinitter框架依赖的第三方python包【64位】

1、配置pip包管理工具的环境变量path

C:\Python27\Scripts

若未安装pip的包管理工具则:

在C:\Python27\Scripts路径下敲入命令: easy_install pip, 等待完成就OK

2、安装Python操作excel读写的xlrd模块

pip install xlrd

3、安装sendkeys模拟键盘事件的模块包

pip install SendKeys-0.3-cp27-none-win_amd64.whl

4、安装pywin32模块的包,其中包括win32gui模块

 第步:Appinum框架window端配置

1安装Nodejs

下载nodejs安装包(http://nodejs.org/download/)安装

测试安装是否成功:

运行cmd,输入node -v

2安装android的SKD

安装android的sdk包,(http://developer.android.com/sdk/index.html),运行依赖 sdk中的 'android'工具。并确保你安装了Level17或以上的版本 api。设置ANDROID_HOME 系统变量为你的 Android SDK 路径,并把tools和platform-tools两个目录加入到系统的 Path路径里。

变量: ANDROID_HOME

值: D:\android-sdk

设置: Path

值: %ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;

3安装Apache Ant

安装Apache Ant(http://ant.apache.org/bindownload.cgi)。解压缩文件夹,并把路径加入环境变量。

变量: ANT_HOME

值: D:\apache-ant-1.8.2

设置: Path

值: %ANT_HOME%\bin

测试ant环境安装成功:

运行cmd,输入ant,如果没有指定build.xml就会输出:

Buildfile: build.xml does notexist!

Build failed

4安装JDK

安装JDK

下载解压文件夹 并且设置 M2HOME 和 M2 环境变量,把 M2 环境变量添加到你的系统PATH变量中。

变量: JAVA_HOME

值: C:\Program Files (x86)\Java\jdk1.7.0_01

变量: classpath

值: %JAVA_HOME%\lib;

设置: Path

值: %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

测试环境安装成功:

运行cmd,输入java -version 如果成功则出现java信息:

5安装Apache Maven

安装Maven(http://maven.apache.org/download.cgi

下载解压文件夹 并且设置 M2HOME 和 M2 环境变量,把 M2 环境变量添加到你的系统PATH变量中。

变量: MAVEN_HOME

值: D:\apache-maven-3.1.1

设置: Path:

值: %MAVEN_HOME%\bin

测试环境安装成功:

运行cmd,输入mvn -v 如果成功则出现maven信息:

6安装appium

1、联网安装Appium【一般在线安装比较慢且成功率不高,用window版的安装包即可】。使用npm安装appium。 在cmd使用命令npm install -g appium 下载appium。或者用npm --registry http://registry.cnpmjs.org install -g appium (推荐这种,npm的国内镜像)
【注:-g全局参数】多等几分钟,可以看到appium的版本1.1.0及安装目录。(整个过程较慢,请耐心等待)安装成功后,在cmd输入appium出现以下信息表明安装成功:

至此,appium的安装过程结束。

2、appinum的window版本,使用AppiumForWindows-1.3.4.1.zip包直接解压;解压后验证环境变量配置是否成功

appium &

appium-doctor

6安装appium-python-client(这步很重要,必须)

进入cmd,输入:pip install Appium-Python-Client

http://blog.csdn.net/gzh0222/article/details/39272785

7安装MySQL-python-1.2.3.win-amd64-py2.7  

如果用到mysql数据库记录执行结果的统计分析则需要安装。前提有mysql的服务的启动

8整个工程涉及到第三方包截图如下:

上一篇:前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理(极大提高代码效率、减少代码量)


下一篇:Front End Developer Questions 前端开发人员问题(二)CSS 后续