当前位置: 澳门新濠3559 > 编程 > 正文

你都可以通过selenium完成自动化测试,那么测试

时间:2019-11-29 05:50来源:编程
Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 简介: selenium 是一个

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

 

我们已经创建了Selenium maven工程,下去开始真正进入到WebDriver的实战中。

使用Selenium通过浏览器对网站进行自动化测试

  自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;”

 

 

既然WebDriver是用于Web的UI自动化测试,那么测试Web的第一步就是启动浏览器。那WebDriver都支持哪些浏览器呢?

 

  驱动下载后,放到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:

#

#

# modified by Valentine Gogichashvili as described in

 

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

 

WebDriver 支持哪些浏览器

WebDriver 支持主流的浏览器包括IE,Chrome,Firefox,Safari等等,微软Win 10 新推出的Edge浏览器,Selenium 2.47.1+版本开始也得到支持。

我们在“Selenium 家族介绍“ 一节中已经知道WebDriver的工作原理,既每个浏览器都有对应的一个Driver,通过以之对应的Driver来驱动浏览器,那我们在启动浏览器前,得先完成浏览器的配置,下载各个浏览器对应的Driver文件。

自动化测试概念:

 

一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。

 

广义上来讲,自动化包括一切通过工具或者运行程序的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成测试数据。狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。

 

我们需要规范的来做单元测试同样需要相应的单元测试框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。

 

  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。

 

IE 浏览器

自动化测试原理:

 

自动化测试分为动态测试和静态测试。

 

动态测试:通过特定的程序来模拟软件的操作过程或操作行为,然后对软件所作出的反应或者输出的结果进行检查和验证。

 

静态测试:按照代码规范和软件开发的最佳实践建立各种代码规则,然后依据这些规则对代码进行自动扫描,发现和规则不匹配的各种问题。

 

自动化测试工具的原理其实都一样,都是通过调用IE COM接口和HTML DOM 对IE、chrome、Firefox等浏览器以及WEB测试对象的操作,Android客户端的则是通过获取元素的ID以及测试对象来进行测试。

 

1、Chrome驱动 chromedriver

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

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

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版本需要这个服务器)

 

 

 

 

支持版本:

  • Selenium 2.0 支持IE 7~11
  • Selenium 3.0 支持IE 9+

适合于使用自动化测试的项目要求:

 

首先考虑产品是否适合做自动化测试。这方法比较普遍的共识是从三个方面进行权衡:

 

1、软件需求变动不频繁

 

出于测试维护成本的考虑,如果软件的需求变动过于频繁,测试人员就要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。

 

项目中针对于某些相对稳定的模块,可以编写自动化测试脚本进行自动化测试,而某些变动较频繁的模块建议采用手工测试。

 

2、项目周期较长

 

由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

 

3、自动化测试脚本可重复使用

 

自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。自动化测试脚本重复使用可大大的减少测试成本。

 

 

 

2、FireFox驱动 gechodriver

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

 

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

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

 

from selenium import webdriver

 

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

browser.get("你都可以通过selenium完成自动化测试,那么测试Web的第一步就是启动浏览器。")      # 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('')

 

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

age.googleapis.com/index.html and read up at

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("")

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('')

 

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('')

 

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("")

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("")

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("")

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路径。

 

IEDriverServer下载和配置

自动化测试使用的工具:

 

首先要先确认你所测试的产品是桌面程序(C/S)还是web应用(B/S)。

 

  桌面程序的工具有:QTP、 AutoRunner、Appium

 

  web应用的工具有:QTP、AutoRunner、Robot Framework、watir、selenium

 

selenium 是支持java、python、ruby、php、C#、JavaScript 。

 

  从语言易学性来讲,首选ruby ,python

 

  从语言应用广度来讲,首选java、C#、php、

 

  从语言相关测试技术成度来讲:ruby ,python ,java

 

  或者你可以考虑整个技术团队主流用什么语言,然后选择相应的语言。

 

1、需要的工具

  (1)eclipse、maven

  (2)新建一个maven项目

  (3)下载好FireFox、Chrome、IE,最好是默认安装

  (4)下载好chromedriver.exe和IEDriverServer.exe

  建立好的maven工程如下:

澳门新濠3559 1

 

2、配置pom.xml文件

  加入以下代码,自动下载相关jar包:

<dependency>

<groupId>org.seleniumhq.selenium</groupId>

<artifactId>selenium-java</artifactId>

<version>2.49.1</version>
</dependency>

 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 3   <modelVersion>4.0.0</modelVersion>
 4 
 5   <groupId>Test</groupId>
 6   <artifactId>test</artifactId>
 7   <version>0.0.1-SNAPSHOT</version>
 8   <packaging>jar</packaging>
 9 
10   <name>test</name>
11   <url>http://maven.apache.org</url>
12 
13   <properties>
14     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15   </properties>
16 
17   <dependencies>
18     <dependency>
19       <groupId>junit</groupId>
20       <artifactId>junit</artifactId>
21       <version>3.8.1</version>
22       <scope>test</scope>
23     </dependency>
24     <dependency>
25       <groupId>org.seleniumhq.selenium</groupId>
26       <artifactId>selenium-java</artifactId>
27       <version>2.49.1</version>
28    </dependency>
29   </dependencies>
30 </project>

 3、下载相关jar包

  (1)右键工程--》选择【Maven】--》【Download Sources】;

  (2)等待下载完相关jar包后,选择【Maven】--》【Update Project...】

4、新建测试类进行不同浏览器的自动化测试

  (1)新建一个ExampleForChrome.java类测试chrome浏览器:

 1 package Test.test;
 2 
 3 import java.io.IOException;
 4 
 5 import org.openqa.selenium.By;
 6 import org.openqa.selenium.WebDriver;
 7 import org.openqa.selenium.WebElement;
 8 import org.openqa.selenium.chrome.ChromeDriver;
 9 import org.openqa.selenium.chrome.ChromeOptions;
10 import org.openqa.selenium.support.ui.ExpectedCondition;
11 import org.openqa.selenium.support.ui.WebDriverWait;
12 
13 public class ExampleForChrome {
14     public static void main(String[] args) throws IOException {
15         // 配置chromeDriver
16         System.setProperty("webdriver.chrome.driver", "C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe");
17       //  System.setProperty("webdriver.chrome.driver", "D:/chromedriver.exe");
18         // 创建一个chrome的浏览器实例
19         
20         
21         ChromeOptions options = new ChromeOptions();
22         //通过配置参数禁止data;的出现
23          options.addArguments("--user-data-dir=C:/Users/Dell/AppData/Local/Google/Chrome/User Data/Default");
24           //通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示
25         options.addArguments("--start-maximized","allow-running-insecure-content", "--test-type");
26         WebDriver driver;
27         driver = new ChromeDriver(options);
28         // 让浏览器访问www.baidu.com
29         driver.get("http://www.baidu.com");
30         // 获取网页的Title
31         System.out.println("Baidu's Title is:" + driver.getTitle());
32         // 通过id找到搜索输入框的DOM
33         WebElement element = driver.findElement(By.id("kw"));
34         // 在搜索框内输入关键字
35         element.sendKeys("上海");
36         // 提交搜索输入框所在的表单
37         element.submit();
38         // 等待10秒让搜索页面加载,判断新页面的Title为“上海”则说明新页面加载完毕
39         (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
40             public Boolean apply(WebDriver d) {
41                 return d.getTitle().startsWith("上海");
42             }
43         });
44         // 显示新页面的Title
45         System.out.println("new page's title is:" + driver.getTitle());
46         // 测试完毕,关闭浏览器
47         driver.quit();
48     }
49 }

  (2)新建一个ExampleForFireFox.java类测试Firefox浏览器:

 1 package Test.test;
 2 
 3 import org.openqa.selenium.By;
 4 import org.openqa.selenium.WebDriver;
 5 import org.openqa.selenium.WebElement;
 6 import org.openqa.selenium.firefox.FirefoxDriver;
 7 import org.openqa.selenium.support.ui.ExpectedCondition;
 8 import org.openqa.selenium.support.ui.WebDriverWait;
 9 
10 public class ExampleForFireFox {
11     public static void main(String[] args) {
12         // 如果你的FireFox没有安装在默认的目录,那么必须在程序中设置,告知去哪里寻找FireFox
13    //     System.setProperty("webdriver.firefox.bin", "D:\Mozilla Firefox\firefox.exe");
14     //    System.setProperty("webdriver.firefox.bin", "C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
15         // 创建一个FireFox的浏览器实例(因为selenium是对Firefox默认支持的,所以不需要浏览器驱动就可直接创建运行)
16         WebDriver driver = new FirefoxDriver();
17         // 让浏览器访问www.baidu.com
18         driver.get("http://www.baidu.com");
19         // 获取网页的Title
20         System.out.println("Baidu's Title is:" + driver.getTitle());
21         // 通过id找到搜索输入框的DOM
22         WebElement element = driver.findElement(By.id("kw"));
23         // 在搜索框内输入关键字
24         element.sendKeys("上海");
25         // 提交搜索输入框所在的表单
26         element.submit();
27         // 等待10秒让搜索页面加载,判断新页面的Title为“上海”则说明新页面加载完毕
28         (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
29             public Boolean apply(WebDriver d) {
30                 return d.getTitle().startsWith("上海");
31             }
32         });
33         // 显示新页面的Title
34         System.out.println("new page's title is:" + driver.getTitle());
35         // 测试完毕,关闭浏览器
36         driver.quit();
37     }
38 }

  (2)新建一个ExampleForIE.java类测试IE浏览器:

 1 package Test.test;
 2 
 3 import org.openqa.selenium.By;
 4 import org.openqa.selenium.WebDriver;
 5 import org.openqa.selenium.WebElement;
 6 import org.openqa.selenium.ie.InternetExplorerDriver;
 7 import org.openqa.selenium.remote.DesiredCapabilities;
 8 import org.openqa.selenium.support.ui.ExpectedCondition;
 9 import org.openqa.selenium.support.ui.WebDriverWait;
10 
11 public class ExampleForIE {
12     public static void main(String[] args) {
13         // 配置ieDriver
14         System.setProperty("webdriver.ie.driver", "D:\IEDriverServer_x64_2.53.1.exe");
15         DesiredCapabilities ieCapabilities = DesiredCapabilities.internetExplorer();
16         ieCapabilities.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS,true);
17         // 创建一个IE的浏览器实例
18         WebDriver driver = new InternetExplorerDriver(ieCapabilities);
19         // 让浏览器访问www.baidu.com
20         driver.get("http://www.baidu.com");
21         // 获取网页的Title
22         System.out.println("Baidu's Title is:" + driver.getTitle());
23         // 通过id找到搜索输入框的DOM
24         WebElement element = driver.findElement(By.id("kw"));
25         // 在搜索框内输入关键字
26         element.sendKeys("上海");
27         // 提交搜索输入框所在的表单
28         element.submit();
29         // 等待10秒让搜索页面加载,判断新页面的Title为“上海”则说明新页面加载完毕
30         (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
31             public Boolean apply(WebDriver d) {
32                 return d.getTitle().startsWith("上海");
33             }
34         });
35         // 显示新页面的Title
36         System.out.println("new page's title is:" + driver.getTitle());
37         // 测试完毕,关闭浏览器
38         driver.quit();
39     }
40 }

5、运行结果

  【右键】--》选择【Run As】--》【Java Application】运行:

澳门新濠3559 2

澳门新濠3559 3

注意事项和相关说明: 

 关于Firefox浏览器:**

  1、Selenium天然支持FireFox,所以在使用FireFox的时候不需要去下载驱动,只需要指定FireFox的安装目录即可。甚至,如果你的FireFox是默认安装的,那么就不需要如下语句:System.setProperty("webdriver.firefox.bin","C:\Program Files (x86)\Mozilla Firefox\firefox.exe");如上代码所示,我的FireFox是安装在C:\Program Files (x86)\Mozilla Firefox\firefox.exe下面的。 
  但是,如果使用Chrome或者IE就需要下载相应的驱动程序:chromedriver.exeIEDriverServer.exe然后在代码中指定这两个驱动的存放位置就可以了。此处我的Chrome和IE浏览器都是默认安装的。

  2、selenium与Firefox版本不兼容的问题,可以更新selenium最新版本或者降低Firefox版本。

【Selenium】 -> 【FireFox】
   2.25.0     ->      18
   2.30.0     ->      19
   2.31.0     ->      20
   2.42.2     ->      29
   2.44.0     ->      33 (不支持31,2014/12/1)
若selenium的版本和firefox不兼容,需要升级selenium的jar包,或者是升级firefox。
切记,关掉forefox的升级功能,否则连本地Windows上的脚本都跑不起来,且必须降级forefox。

  可以参考博文:    

    

  

网上找到的一些解决方法:

Firefox 45版本以上使用selenium-3.0.1无法直接启动需要如下步骤:

(1)    下载geckodriver.exe

解压后放置到

1.查看C:Python27Libsite-packagesseleniumwebdriverfirefox中的webdriver.py,在def_init_函数中,executable_path="geckodriver",之前搭建的环境上是executable_path="wires";

2.geckodriver是一原生态的第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动firefox,所以需要下载geckodriver.exe,下载地址:

3.放在C:Python27(查看环境变量path中是否添加C:Python27该路径)、

(2)

from selenium import webdriver
fromselenium.webdriver.common.desired_capabilities import DesiredCapabilities

fromselenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary(r'C:ProgramFiles (x86)Mozilla Firefoxfirefox.exe')

driver =webdriver.Firefox(firefox_binary=binary)

driver.get('')

 

  关于IE浏览器:

 1、IE浏览器需要关闭安全保护模式,不然就会打开不了网页。

  2、针对windows vista和windows 7上的IE7或者更高的版本,必须在IE选项设置的安全页中,4个区域的启用保护模式的勾选都去掉(或都勾上),即保持四个区域的保护模式是一致的。如下图所示:

澳门新濠3559 4

  3、针对IE10和更高的版本,必须在IE选项设置中的高级页中,取消增强保护模式。如下图所示:

澳门新濠3559 5

  4、浏览器的缩放比例必须设置为100%,这样元素定位才不会出现问题,如下图所示:

澳门新濠3559 6

  5、针对IE11,需要修改注册表。如果是32位的windows,key值为

HKEY_LOCAL_MACHINESOFTWAREMicrosoftInternet 
ExplorerMainFeatureControlFEATURE_BFCACHE

,如果是64位的windows,key值为

HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftInternet 
ExplorerMainFeatureControlFEATURE_BFCACHE

如果key值不存在,就添加。之后在key内部创建一个iexplorer.exe,DWORD类型,值为0,我的windows是64位的,修改后的注册表如下图所示: 

澳门新濠3559 7

之后,重新运行Java文件就可以正常打开浏览器了。

  关于chrome浏览器:

  当运行测试文件的时候,能够打开浏览器,但会出现【data;】的提示:如下图所示:

澳门新濠3559 8

为了关闭这个提示,可以在Java类中添加以下代码:

ChromeOptions options = new ChromeOptions();
        //通过配置参数禁止data;的出现
         options.addArguments("--user-data-dir=C:/Users/Dell/AppData/Local/Google/Chrome/User Data/Default");
          //通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示
        options.addArguments("--start-maximized","allow-running-insecure-content", "--test-type");
        WebDriver driver;
        driver = new ChromeDriver(options);

 

以上是我win10 系统,Dell电脑的设置。如果是win7 的系统,可以参考以下设置:

ChromeOptions options = new ChromeOptions();
    //通过配置参数禁止data;的出现
     options.addArguments("--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data/Default");
      //通过配置参数删除“您使用的是不受支持的命令行标记:--ignore-certificate-errors。稳定性和安全性会有所下降。”提示
    options.addArguments("--start-maximized",
   "allow-running-insecure-content", "--test-type");
   driver = new ChromeDriver(options);

 

   如果以上设置完成,重新运行时出现以下错误:

澳门新濠3559 9

可以看出,是chrome浏览器与chromeDriver.exe版本不兼容的问题,可以下载chromeDriver.exe的最新版本。

澳门新濠3559 10

 

澳门新濠3559 11

 

 

网上找了遇到相同问题的解决办法

下载v2.24版本的chromedriver.exe替换原有的chromedriver.exe(下载地址:

重新运行成功!

澳门新濠3559 12

网上找到的相关资料

下面是关于加载Chrome配置的方法(网上copy的,保存留用): 
  一、加载所有Chrome配置
  用Chrome地址栏输入chrome://version/,查看自己的“个人资料路径”,然后在浏览器启动时,调用这个配置文件,代码如下:
  #coding=utf-8
  from selenium import webdriver
  option = webdriver.ChromeOptions()
  option.add_argument('--user-data-dir=C:UsersAdministratorAppDataLocalGoogleChromeUser Data') #设置成用户自己的数据目录
  driver = webdriver.Chrome(chrome_options=option)

  二、修改浏览器的User-Agent来伪装你的浏览器访问手机m站
  #coding=utf-8
  from selenium import webdriver
  option = webdriver.ChromeOptions()
  option.add_argument('--user-agent=iphone')
  driver = webdriver.Chrome(chrome_options=option)
  driver.get('')

  三、浏览器启动时安装crx扩展
  #coding=utf-8
  from selenium import webdriver
  option = webdriver.ChromeOptions()
  option.add_extension('d:crxAdBlock_v2.17.crx') #自己下载的crx路径
  driver = webdriver.Chrome(chrome_options=option)
  driver.get('')

3、IE驱动 IEDriverServer

淘宝镜像地址: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选项 -> 安全,四个区域的“启用保护模式”设置必须一致,要么全选,要么全不选。

 澳门新濠3559 13

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

 

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

 

2、Eclipse-PyDev插件

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

在 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 解释器就配置好了。

IEDriverServer下载:

我们可以从 http://selenium-release.storage.googleapis.com/index.html 下载,如果该地址打不开,可以用淘宝的镜像地址:https://npm.taobao.org/mirrors/selenium/。

IEDriverServer 下载时得注意,你用的是什么版本的Selenium 就在对应版本里面找IEDriverServer。
例如我们现在用的是Selenium 3.5.0版本,那么我们就到3.5文件里面去下载对应的IEDriverServer,下载时还得根据自己的系统和版本。例如我是win 64位,那么我可以下载IEDriverServer_x64_3.5.0.zip,下载完成后解压得到最终的IEDriverServer.exe文件。

下载完成后的,我们回到新建好的Senlenium maven项目工程(新建过程:http://www.jianshu.com/p/6ca7bbcdf2dd ),在项目名中我们可以新建个名为drivers的文件夹,再把已经下载好的IEDriverServer.exe文件复制到该新建的drivers文件夹中,最终工程目录结果如下:

澳门新濠3559 14

工程结构

4、其它的驱动

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

 

 第七步: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模块

 

 

 

IE的配置

配置IE,打开IE选项,打开安全标签,如下图,设置红框部分,设置每个区域的 “启动保护模式”,要嘛都勾选,要嘛都不勾选。

澳门新濠3559 15

IE 设置

 第八步:Appinum框架window端配置

启动IE浏览器

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;

/**
 * Created by 米阳 on 7/9/2017.
 */
public class OpenBrowserTest {

    public static void main(String args[]) {
        openIE();
    }

    private static void openIE() {
//        设置系统变量,并设置iedriver的路径为系统属性值
        System.setProperty("webdriver.ie.driver", ".\drivers\IEDriverServer.exe");
//        实例化 InternetExplorerDriver
        WebDriver driver = new InternetExplorerDriver();
    }

}

1安装Nodejs

下载nodejs安装包()安装

 

测试安装是否成功:

运行cmd,输入node -v 

 

Chrome 浏览器

2安装android的SKD

安装android的sdk包,( 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;

    

ChromeDriver下载地址:

澳门新濠3559,chromedriver下载时也需要下载到匹配的版本,特别是chrome浏览器和chromedriver的版本需要匹配。那如何查看自己的chrome需要下载哪个版本的chromedriver呢?通常使用最新版的chrome和最新版的chromedriver便可,但如果你并非都是最新版的,那么可以到:https://sites.google.com/a/chromium.org/chromedriver/downloads这里面去查看到你的哪个版本的chromedriver支持你所使用的chrome版本。

当确定好符合你使用的chromedriver版本时,可以到http://chromedriver.storage.googleapis.com/index.html,国内用户也可以到淘宝npm镜像(http://npm.taobao.org/mirrors/chromedriver)去下载对应版本的chromedriver版本。最后将下载下来的chromedriver解压后放于跟IEDriverServer.exe 相同位置,如下图:

澳门新濠3559 16

chromedriver.png

3安装Apache Ant

安装Apache Ant(

         变量: ANT_HOME

           值: D:apache-ant-1.8.2

         设置: Path

           值: %ANT_HOME%bin

 

 测试ant环境安装成功:

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

 

  Buildfile: build.xml does notexist!

 Build failed

启动Chrome浏览器

在刚新建的OpenBrowser_Test类中添加如下方法:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

/**
 * Created by 米阳 on 7/9/2017.
 */
public class OpenBrowserTest {

    public static void main(String args[]) {
        openChrome();
    }

    private static void openChrome() {
//        设置系统变量,并设置chromedriver的路径为系统属性值
        System.setProperty("webdriver.chrome.driver", ".\drivers\chromedriver.exe");
//        实例化ChromeDriver
        WebDriver driver = new ChromeDriver();
    }

}

4安装JDK

   安装JDK

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

         变量: JAVA_HOME

           值: C:Program Files (x86)Javajdk1.7.0_01

         变量: classpath

           值: %JAVA_HOME%lib;

         设置: Path

           值: %JAVA_HOME%bin;%JAVA_HOME%jrebin;

 

   测试环境安装成功:

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

 

 

Firefox 浏览器

火狐浏览器得分两种情况处理。

  1. 当火狐的版本<=47时,我们不需要额外的设置。当时如果安装时没有使用默认安装路径,那么和使用默认安装路径在代码处理上会有点不同:
  • 默认安装路径,我们可以直接实例化一个FirefoxDriver,便可:
    public static void main(String args[]) {
        openFirefoxDef();
    }

    private static void openFirefoxDef(){
 //       实例化 FirefoxDriver, 启动Firefox
        WebDriver driver = new FirefoxDriver();
    }
  • 如果火狐不是默认安装路径,你需要制定火狐按路径:
    public static void main(String args[]) {
        openFireFoxTest();
    }
    public void openFireFoxTest(){
//        指定firefox 安装路径
        System.setProperty("webdriver.firefox.bin","C:\Program Files (x86)\Mozilla Firefox\firefox.exe");
//        启动firefox浏览器
        WebDriver driver = new FirefoxDriver();
    }
  1. 当火狐版本V48+时,那么想启动火狐浏览器,我们得去下载火狐对应的geckodriver。下载地址:https://github.com/mozilla/geckodriver/releases,基本下载最新版便可。那么我看下这时我们如何启动Firefox:
    public static void main(String args[]) {
        openFirefoxByGeck();
    }
    private static void openFirefoxByGeck() {
//        设置系统变量,并设置 geckodriver 的路径为系统属性值
        System.setProperty("webdriver.gecko.driver", ".\drivers\geckodriver.exe");
//        实例化 FirefoxDriver
        WebDriver driver = new FirefoxDriver();
    }

5安装Apache Maven

   安装Maven()

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

         变量: MAVEN_HOME

           值: D:apache-maven-3.1.1

         设置: Path:

           值: %MAVEN_HOME%bin

 

   测试环境安装成功:

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

 

 

Edge浏览器

win 10 系统微软推出了全新的Edge浏览器,同样上面提到Selenium 2.47.1版本开始开始支持这一浏览器,但是你的Win 10的build版本必须大于或者等于10240版本也就是说你的edge浏览器版本需要是10240版本以上,那如何去查看自己的系统版本,很简单打开控制台,输入ver,显示如下的。

澳门新濠3559 17

image.png

通常edge版本跟系统版本是一致的,但是如果你真的想查看edge版本,只需要打开edge的设置,便可看到:

澳门新濠3559 18

image.png

另外值得注意的是从微软官方 https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/webdriver-commands/ 中我们可以得知,如果你想使用XPath Selector(后面会讲这种重要的页面定位方式)那么你的build版本需要大于等于10586。

澳门新濠3559 19

Paste_Image.png

如果你的系统满足要求,那恭喜你可以继续往下。

6安装appium

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

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

 

 

 

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

appium &

appium-doctor

 

 

准备

Edge跟IE类似,同样我们需要去下载对应的driver,下载地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ ,需要注意的是根据你上面所查到的系统版本去下载对应的MicrosoftWebDriver,不然会报错。而且下载有两种一种是MicrosoftWebDriver.exe文件,一种是MicrosoftWebDriver.msi文件,如果你下载到的是.msi文件,那就双击运行按正常软件安装便可。如果你下载到的是MicrosoftWebDriver.exe文件,那就直接剪切放进项目的drivers文件夹中:

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

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

 

启动Edge浏览器

我们还是直接在OpenBrowser_Test类中添加如下方法:

    public static void main(String args[]) {
        openEdge();
    }

    private static void openEdge() {
//        指定MicrosoftWebDriver路径
        System.setProperty("webdriver.edge.driver", ".\drivers\MicrosoftWebDriver.exe");
//        启动 Edge浏览器
        WebDriver driver = new EdgeDriver();
    }

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

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

 

 

PhantomJS 浏览器

phantomjs比较特殊的一个浏览器,它实现了一个无界面的webkit浏览器。虽然没有界面,但dom渲染、js运行、网络访问、canvas/svg绘制等功能都很完备,在页面抓取、页面输出、自动化测试等方面有广泛的应用。这个我们后面讲。

最后一个重要补充:
当我们new一个XXXDriver()时,我们启动的是一个全新的浏览器(没有预装插件,没有缓存,没有cookies等等)

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

 

编辑:编程 本文来源:你都可以通过selenium完成自动化测试,那么测试

关键词: