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.34 | v61-63 |
v2.33 | v60-62 |
v2.32 | v59-61 |
v2.31 | v58-60 |
v2.30 | v58-60 |
v2.29 | v56-58 |
v2.28 | v55-57 |
v2.27 | v54-56 |
v2.26 | v53-55 |
v2.25 | v53-55 |
v2.24 | v52-54 |
v2.23 | v51-53 |
v2.22 | v49-52 |
v2.21 | v46-50 |
v2.20 | v43-48 |
v2.19 | v43-47 |
v2.18 | v43-46 |
v2.17 | v42-43 |
v2.13 | v42-45 |
v2.15 | v40-43 |
v2.14 | v39-42 |
v2.13 | v38-41 |
v2.12 | v36-40 |
v2.11 | v36-40 |
v2.10 | v33-36 |
v2.9 | v31-34 |
v2.8 | v30-33 |
v2.7 | v30-33 |
v2.6 | v29-32 |
v2.5 | v29-32 |
v2.4 | v29-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 支持 Android 和 BlackBerry 两个移动平台的浏览器测试。
- Android目前为市场占有率第一的移动平台,对于其上面自动化测试推荐Appium,Appium 扩展了WebDriver的协议,支持 iOS 平台和 Android 平台上的原生应用、Web 应用和混合应用等。
- BlackBerry 平台目前的市场占有率很小,国内市场就更少了。
[2] 支持浏览器
WebDriver 目前所支持的浏览器包括:Firefox、Chrome、IE、Edge(win10) 、Opera 、Safari(苹果MAC)。
选择支持这些浏览器,主要与浏览器的内核有关。
[3] 支持模式
HtmlUnit 和 PhantomJS 是两个比较特殊的模式,我们可以把它们看作是伪浏览器,在这种模式下支持 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,可看到截图;