欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

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

来源: javaer 分享于  点击 41184 次 点评:228

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


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 支持 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,可看到截图;

相关文章

    暂无相关文章
相关栏目:

用户点评