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

  Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。

简介:

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位)

 

  自WebDriver 3.0 之后,Selenium不再提供默认的浏览器支持。换言之,不再默认地支持Firefox了。用FireFox测试, 就需要用FireFox的驱动才行。

第一步:安装Python

 

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

 

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

 

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

 

 

  驱动下载后,放到Python安装目录的Scripts文件夹下(相当于变相添加环境变量)。

第二步:安装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

 

  chromedriver、IEDriverServer等浏览器测试驱动都是调用系统的谷歌、IE浏览器,所以驱动和浏览器客户端必须相互匹配。

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

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

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

 

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

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

请注意安装路径。默认在:C:Python27Scripts。

 

1、Chrome驱动 chromedriver

chromedriver没有64位版本,32即可驱动

https://sites.google.com/a/chromium.org/chromedriver/downloads

这个地址被墙了,可以用以下地址下载:

http://chromedriver.storage.googleapis.com/index.html

http://npm.taobao.org/mirrors/chromedriver/

chromedriver 和支持的 Chrome 版本对照表

v2.40

v66-68

v2.39

v66-68

v2.38

v65-67

v2.37

v64-66

v2.36

v63-65

v2.35

v62-64

v2.34

v61-63

v2.33

v60-62

v2.32

v59-61

v2.31

v58-60

v2.30

v58-60

  

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

打开DOS界面,进入到目录: C:Python27Scripts,

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

 

 

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

 

 

 

 

2、FireFox驱动 gechodriver

https://github.com/mozilla/geckodriver/releases

这个地址也被墙了,CSDN上下载了一个,版本号是v0.20.1

 

第五步:验证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的安装目录下...GoogleChromeApplication ,然后设置path环境变量,把chrome的安装目录(我的:C:Program Files (x86)GoogleChromeApplication):

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)GoogleChromeApplicationchromedriver.exe"

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

driver =  webdriver.Chrome(chromedriver)

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

driver.quit()

 

还报个错:

Chrome version must be >= 27.0.1453.0n  (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 ExplorerIEDriverServer.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 FilesInternet ExplorerIEDriverServer.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)GoogleChromeApplicationchromedriver.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路径。

 

3、IE驱动 IEDriverServer

http://selenium-release.storage.googleapis.com/index.html

淘宝镜像地址:https://npm.taobao.org/mirrors/selenium/

IE驱动没有找到版本对应,测试了下貌似是向下兼容的。测试环境:IE8,IEDriverServer2.5 和 3.9版本,都可以运行。

用IE浏览器可能会报一个错:Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones. Enable Protected Mode must be set to the same value (enabled or disabled) for all zones.

工具 -> Internet选项 -> 安全,四个区域的“启用保护模式”设置必须一致,要么全选,要么全不选。

 金沙官网线上 1

 第六步: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 解释器就配置好了。

4、其它的驱动

参考官网,能想到的驱动都在这里了。

http://www.seleniumhq.org/download/

 

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

 

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

C:Python27Scripts

 

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

在C:Python27Scripts路径下敲入命令: 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端配置

本文由金沙官网线上发布于编程,转载请注明出处:基于Selenium2与Python自动化测试环境搭建

您可能还会对下面的文章感兴趣: