热门标签 | 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,可看到截图;


推荐阅读
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文深入探讨了 hCalendar 微格式在事件与时间、地点相关活动标记中的应用。作为微格式系列文章的第四篇,前文已分别介绍了 rel 属性用于定义链接关系、XFN 微格式增强链接的人际关系描述以及 hCard 微格式对个人和组织信息的描述。本次将重点解析 hCalendar 如何通过结构化数据标记,提高事件信息的可读性和互操作性。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • 本文详细介绍了如何在Java Web服务器上部署音视频服务,并提供了完整的验证流程。以AnyChat为例,这是一款跨平台的音视频解决方案,广泛应用于需要实时音视频交互的项目中。通过具体的部署步骤和测试方法,确保了音视频服务的稳定性和可靠性。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
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社区 版权所有