热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

*Selenium2+Java+Window下测试环境搭建、WebDriver驱动

1、安装Java在大多Java的书都会提到Java的跨平台性,为什么Java可以跨平台是因为Java虚拟机(JavaVirtualMachine---

1、安装 Java

在大多 Java 的书都会提到 Java 的跨平台性,为什么 Java 可以跨平台是因为 Java 虚拟机(Java Virtual Machine ---- JVM)的存在,Java 的开发都针对不同的平台开发了不同的 Java 虚拟机,Java 程序运行于 Java 虚拟机之上,所以有 Java 虚拟机的地方就能运行 Java 程序。当然,在 Java 虚拟机上不仅仅可以运行 Java 语言, Jython、 JRuby、Groovy、Scala 等语言都可以在 Java 虚拟机上运行;

配置环境变量


2、安装eclipse


3、编写Java程序


4、安装Selenium

1、下载Selenium Java的jar包,http://npm.taobao.org/mirrors/selenium/3.8/
2、在创建的项目上右键 Build Path---->Add Libraries…
3、选择 User Library 选项,点击“Next”。
4、点击 User Libraries…
5、创建一个 Library 的目录,名字随便取。
6、选择解压的 selenium-java 目录,添加其下面的所有 jar 文件。(可以通过 Ctrl+a 一次选择一个目录下
的所有文件进行添加。)包括 libs 目录下的所有包也要添加噢!
7、导入 jar 包完成
8、编写第一个自动化脚本

5、安装浏览器驱动

WebDriver 支持 Firefox (FirefoxDriver)、IE (InternetExplorerDriver)、Opera (OperaDriver) 和 Chrome(ChromeDriver)。对 Safari 的支持由于技术限制在本版本中未包含,但是可以使用 SeleneseCommandExecutor模拟。它还支持 Android (AndroidDriver)和 iPhone (IPhoneDriver) 的移动应用测试。除此之外它还包括一个基于 HtmlUnit 的无界面实现,相关驱动为 HtmlUnitDriver。

(1)InternetExplorerDriver:谷歌浏览器、火狐、IE

下载时参考:The path to the driver executable must be set by the webdriver.ie.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver. The latest version can be downloaded from http://selenium-release.storage.googleapis.com/index.html

ie浏览器的版本对应这个并没有找到具体所对应的版本,不过据我实测的结果,一般用2.5版本比较好一些(ie11)

下载链接:http://selenium-release.storage.googleapis.com/index.html

这里写图片描述

除此之外,还要通过:工具> internet选项>安全;
在里面如图的四个选项,把保护模式设置为全部勾选或者全部不勾选;

在ie7或更高的windowsvista或windows7上,你必须设置每个区域的受保护模式设置为相同的值。值可以是开或关,只要对每个区域都是相同的。要设置保护模式设置,请选择“Internet选项……”从“工具”菜单中,点击“安全”选项卡。对于每个区域,将会有一个复选框位于标签“启用保护模式”的标签底部。

这里写图片描述

(2)FirefoxDriver

对于火狐浏览器,对应的driver只能兼容47版本一下的

下载链接:https://github.com/mozilla/geckodriver/releases/

(3)ChromeDriver与Chrome的的对应版本

下载链接:http://npm.taobao.org/mirrors/chromedriver/

chromedriver版本支持的Chrome版本
v2.34v61-63
v2.33v60-62
v2.32v59-61
v2.31v58-60
v2.30v58-60
v2.29v56-58
v2.28v55-57
v2.27v54-56
v2.26v53-55
v2.25v53-55
v2.24v52-54
v2.23v51-53
v2.22v49-52
v2.21v46-50
v2.20v43-48
v2.19v43-47
v2.18v43-46
v2.17v42-43
v2.13v42-45
v2.15v40-43
v2.14v39-42
v2.13v38-41
v2.12v36-40
v2.11v36-40
v2.10v33-36
v2.9v31-34
v2.8v30-33
v2.7v30-33
v2.6v29-32
v2.5v29-32
v2.4v29-32

下载之后配置Path

6、WebDriver驱动

到目前为止,我们所熟悉的浏览器驱动有:ChromeDriver、FirefoxDriver、InternetExplorerDriver 和 RemoteWebDriver 等,除此之外,WebDriver 还支持哪些平台及驱动呢,本节将会对这些驱动做个简单介绍。

(1)WebDriver 所支持的平台/浏览器/模式:

|平台/浏览器/模式 |驱 动 |说明|
|–|
|Android ||支持脚本在 Android WebView 应用的测试,一般指移动端浏览器|
|BlackBerry ||支持脚本在黑莓浏览器上运行|
|Firefox |包含在 Selenium 安装包中|包含在各语言的 Selenium(WebDriver)包里,这也是为什么安装完 Selenium 后就可以直接使用 Firefox 浏览器运行脚本的原因|
|Chrome |chromedriver.exe| 因为 WebDriver 原本为谷歌的项目,之后与 Selenium 项目合并,所以对Chrome 浏览器的支持也非常好|
|IE |IEDriverServer.exe| 需要下载驱动支持,用于驱动脚本在 IE 系列的浏览器下运行|
|Edge |MicrosoftWebDriver.exe |支持脚本在 Windows10 操作系统 Edge 浏览器下执行|
|Opera |operadriver.exe|关 于 Opera 浏 览 器 的 前 世 今 生 比 较 复 杂 , 总 之 , 现 在 的OperaChromiumDriver(原 OperaDriver)基于 ChromeDriver|
|Safari| 包含在 Selenium Server 中|Safari 浏览器由苹果公司开发,最早运行于苹果自家 MAC 平台。目前也提供有 Windows 版本|
|HtmlUnit |包含在 Selenium Server 中|HtmlUnit 将请求返回文档模拟成 HTML, 从而模拟浏览器的运行, 但又非真正的启动一款浏览器执行脚本。|
|PhantomJS| phantomjs.exe|PhantomJS 是一个拥有 Javascript API 的无界面 WebKit ,和 HtmlUnit 类似,可以看作是一款无界面的浏览器|

[1] 支持平台

WebDriver 支持 AndroidBlackBerry 两个移动平台的浏览器测试。

  • Android目前为市场占有率第一的移动平台,对于其上面自动化测试推荐Appium,Appium 扩展了WebDriver的协议,支持 iOS 平台和 Android 平台上的原生应用、Web 应用和混合应用等。
  • BlackBerry 平台目前的市场占有率很小,国内市场就更少了。

[2] 支持浏览器

WebDriver 目前所支持的浏览器包括:Firefox、Chrome、IE、Edge(win10) 、Opera 、Safari(苹果MAC)
选择支持这些浏览器,主要与浏览器的内核有关。

[3] 支持模式

HtmlUnitPhantomJS 是两个比较特殊的模式,我们可以把它们看作是伪浏览器,在这种模式下支持 html、
js 等的解析,但不会真正的渲染出页面。由于不进行 CSS 及 GUI 渲染,所以运行效率上要比真实浏览器快很多,主要用在功能性测试上面

(2)Edge 浏览器

目前 Selenium 2.47.0 版本已经支持 Edge 浏览器,不过,Edge 浏览器只能运行于 Windows 10 操作系统。与IE 浏览器一样,要想让测试用例在该浏览器上运行需要该浏览器的驱动,需要下载大于 Selenium2.47.0 版的 jar包。

注意:在不知道驱动名称和下载地址的情况下,可以直接运行代码,早报错信息里会提供所需要的驱动和下载地址的链接!

Console 提示信息:

Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.edge.driver system property; for more information,see https://github.com/SeleniumHQ/selenium/wiki/MicrosoftWebDriver. The latest version can be downloaded from http://go.microsoft.com/fwlink/?LinkId=619687

在错误信息的最后给出了 Edge 驱动的下载地址,复制链接下载 MicrosoftWebDriver.msi 文件。然后,双击进行安装。默认会被安装在 C:\Program Files (x86)\Microsoft Web Driver 目录下。将该目录添加到系统环境变量path 下。或者将该目录下的MicrosoftWebDriver.exe 文件拷贝到已经添加到环境变量 path 的目录下。然后,再来执行上面的脚本,Edge 浏览器就可以被正常打开了

(3)Opera 浏览器

Opera 浏览器的发展在浏览器内核介绍部分有所介绍。最近 Opera 浏览器采用 Blink 内核,需要OperaChromiumDriver 驱动支持。

**GitHub 地址:**https://github.com/operasoftware/operachromiumdriver
下载 operadriver_win64.zip,解压后将得到 operadriver.exe 文件,同样将其放到系统环境变量 path 的目录下。

(4)Safari 浏览器

Safari 为苹果公司的浏览器,最早支持 MAC 平台,不过,现在已经支持 Windows 平台。与其他浏览器有所不同,Safari 浏览器没有相应的驱动文件,它的驱动被集成到了 Selenium Server 中,所以,需要通过RemoteWebDriver 模式运行。

  • 首先,在 Windows 命令提示符(或 Linux 终端)下启动 Selenium Server:> java -jar selenium-server-standalone-2.47.0.jar ; 然后,运行脚本。

public static void main(String[] args) throws Exception{WebDriver driver = new RemoteWebDriver( new URL("http://127.0.0.1:4444/wd/hub"), DesiredCapabilities.safari());driver.get("http://www.baidu.com/");driver.findElement(By.id("kw")).sendKeys("safari");driver.findElement(By.id("su")).click();driver.close();
}

(5)HtmlUnit 模式

HtmlUnit 官方网站: http://htmlunit.sourceforge.net/

HtmlUnit 是一款开源的 Java 页面分析工具,读取页面后,可以有效的使用 HtmlUnit 分析页面上的内容。项目可以模拟浏览器运行,被誉为 Java 浏览器的开源实现。这个没有界面的浏览器,运行速度也是非常迅速的。

Selenium Server 中同样包含了 HtmlUnit 驱动。

  • 首先,在 Windows 命令提示符(或 Linux 终端)下启动 Selenium Server:> java -jar selenium-server-standalone-2.47.0.jar ; 然后,运行脚本。

这种模式下运行脚本并不会真正的打开浏览器,整个过程都是在后台执行的。所以,我们在脚本的开始和结束的位置添加了打印信息,当然,更好的做法是在适当的步骤添加截图。

(6)PhantomJS 模式

**PhantomJS 官方网站:**http://phantomjs.org/

PhantomJS 是一个拥有 Javascript API 的无界面 WebKit 内核,与 HtmlUnit 类似。正如我们所知道的,Webkit是 Safari 和其他一些浏览器使用的布局引擎。因此,PhantomJS 是一个浏览器,而且是一个无界面的浏览器。这意味着,渲染后的网页实际上绝不会显示。这或许有些不可思议,所以我们可以把它作为一个可编程的浏览器终端。

在使用 PhantomJS 之前,需要先下载。PhantomJS 支持 Windwos、MAC、Linux 等平台,我们可以根据自己的环境选择相应的版本进行下载。下载完成后解压得到 phantomjs.exe 程序,将其同样将其放到系统环境变量 path 的目录下,即可通过
PhantomJS 模式运行测试脚本。

public static void main(String[] args) throws Exception{WebDriver driver = new RemoteWebDriver( new URL("http://127.0.0.1:4444/wd/hub"), DesiredCapabilities.phantomjs());driver.get("http://www.baidu.com/");driver.findElement(By.id("kw")).sendKeys("phantomjs");driver.findElement(By.id("su")).click();Thread.sleep(2000);File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcFile,new File("d:\\screenshot.png"));driver.close();
}

通过 HtmlUnit 或 PhantomJS 进行自动化测试的运行不会真正的打开一个浏览器,在我们看来,可见的东西才会觉得是真实的,这个时候可以在脚本必要的位置添加截图,另一方面截图也可以帮助定位问题。打开 D 盘screenshot.jpg,可看到截图;


推荐阅读
  • pyecharts 介绍
    一、pyecharts介绍ECharts,一个使用JavaScript实现的开源可视化库,可以流畅的运行在PC和移动设备上,兼容当前绝大部 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Maven构建Hadoop,
    Maven构建Hadoop工程阅读目录序Maven安装构建示例下载系列索引 序  上一篇,我们编写了第一个MapReduce,并且成功的运行了Job,Hadoop1.x是通过ant ... [详细]
  • MR程序的几种提交运行模式本地模型运行1在windows的eclipse里面直接运行main方法,就会将job提交给本地执行器localjobrunner执行-- ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
author-avatar
娃娃亲莹莹世界
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有