Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生)
今天又被坑了一把,不知谁把 Slave 机的火狐浏览器版本升级为了 48 的版本,导致网页自动化测试脚本无法启动火狐的浏览器,相关的网页自动化脚本全线飘红(可惜不是股票,哈哈哈...),报版本不兼容的错误(当前 selenium-server 版本为 2.53.1,火狐升级后版本为 48.0.2)。
查看了一下,发现 Selenium 3 也在众所期望中登场了,从其官网的更新历史可知其主要特性如下所示:
- 1、全面支持JDK8。毕竟JDK8是Oracle官方支持的版本,同时若想使用 java binding则必须使用JDK8了。预计selenium-standalone-server后续也会运行在 JDK8 上;
- 2、取消 Selenium RC 的支持,全面回归 WebDriver 协议;
- 3、通过 Mozilla 官方的 geckodriver 支持 Firefox。虽然之前谷大爷实现原生支持了火狐,但毕竟不是火狐自己实现的。同时新版本的火狐也更新了其新的引擎,google原生的驱动未实现新引擎的支持,所以 geckodriver 的出现也是一个必然。在 Selenium 3 中系统特性 webdriver.firefox.marionette 也进行了强制设定。
- 4、通过微软官方的ms webdriver支持 Edge 浏览器,注意仅支持 Version 9+。又是一个官方版本哦 ^_^,
- 5、支持 Mac OS(Safari 10+),支持官方的 safaridriver,由此看出 Apple 官方也买了 webdriver 协议的单哦 ^_^。是否由此可见 WebDriver 协议一统江湖的美好前景了,哈哈哈。。。
Selenium 3.x 在启动 Firefox 48.x 的时候,必须下载 geckodriver.exe 驱动,并将其路径配置在 Path 变量中。
下面是Selenium3启动Firefox 48.x 的简单示例,供各位参考。
/**
* Aaron.ffp Inc.
* Copyright (c) 2004-2016 All Rights Reserved.
*/
package ffp.demo.webdriver; import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.os.WindowsUtils;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test; /**
* <strong>Selenium3 启动 Firefox 48</strong><br>
* <br>
* @author Aaron.ffp
* @version V1.0.0: ffp-demo ffp.demo.webdriver DemoSelenium3.java, 2016-09-17 17:49:55.933 Exp $
*/
public class DemoSelenium3 {
String url = "http://localhost:8080/ffp-demo/res/main/webdriver/DemoAlert.html"; private WebDriver driver; @Test
public void test_alert() throws InterruptedException {
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true); this.driver = new FirefoxDriver(capabilities); this.driver.manage().window().maximize();
this.driver.get(this.url); this.driver.findElement(By.xpath("//input[@class='alert']")).click();
Alert alert = this.driver.switchTo().alert(); System.out.println(alert.getText()); Thread.sleep(5000); alert.accept(); this.driver.switchTo().defaultContent(); Thread.sleep(5000); this.driver.findElement(By.xpath("//input[@class='alert']")).click(); Thread.sleep(5000); WindowsUtils.killByName("geckodriver.exe");
}
}
执行日志如下所示:
九月 17, 2016 6:42:22 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
信息: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
1474108943366 Marionette INFO Listening on port 59022
1474108944547 Marionette INFO startBrowser dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108944558 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
九月 17, 2016 6:42:24 下午 org.openqa.selenium.remote.ProtocolHandshake createSession
信息: Detected dialect: W3C
1474108944887 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108944995 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108945360 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108945383 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108945433 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
这是一个:弹出框(警示、提示)
1474108950462 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108955570 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108955577 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
1474108955590 Marionette INFO sendAsync dd016983-5b27-4343-bcbb-4ef21d391ba8
PASSED: test_alert
写在后续:
关于是否要升级?可根据各自当前的自动化测试需求进行决定,若是需要测试Edge、Safari及Firfox高版本(Version 48+),那么升级就成了一种必要;否则,我个人觉得当前无需升级。升级与否,见仁见智吧。
相应的脚本源码文件分享链接:https://yunpan.cn/ckrsnINJhm3cw 访问密码 3ae9
至此,Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生) 顺利完结,希望此文能够给初学 Selenium 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生)的更多相关文章
- Selenium2学习-006-WebUI自动化实战实例-004-解决 Chrome 浏览器证书提示:--ignore-certificate-errors
此文主要讲述 Java 运行 Selenium 脚本时,如何消除 Chrome 浏览器启动后显示的证书错误报警提示,附带 Chrome 参数使浏览器最大化的参数. 希望能对初学 Selenium2 W ...
- Selenium2学习-040-JavaScript弹出框(alert、confirm、prompt)操作演示实例
弹出框是网页自动化测试常见得操作页面元素之一,常见的JavaScript弹出框有如下三种: 1.alert(message):方法用于显示带有一条指定消息和一个 OK 按钮的警告框.DemoAlert ...
- Selenium2学习-002-Selenium2 Web 元素定位及 XPath 编写演示示例
此文主要对 Selenium2 的 Web 元素定位及 XPath 编写示例,敬请各位亲们参阅,共同探讨.若有不足之处,敬请各位大神指正,不胜感激! 通过 Firefox(火狐)浏览器的插件 Fire ...
- Selenium启动Firefox示例(java版)
本文示例使用selenium启动Firefox,并将浏览器窗口最大化,在百度搜索框内输入"HelloWorld",最后点击搜索按钮. 源代码如下: 1 package com.se ...
- Selenium2学习-005-WebUI自动化实战实例-003-三种浏览器(Chrome、Firefox、IE)启动脚本源代码
此文主要通过 三种浏览器(Chrome.Firefox.IE)启动脚本 功能,进行 Selenium2 三种浏览器启动方法的实战实例讲解.文中所附源代码于 2015-01-18 20:33 亲测通过, ...
- Selenium2学习(一)-pip降级selenium3.0
selenium版本安装后启动Firefox出现异常:'geckodriver' executable needs to be in PATH selenium默默的升级到了3.0,然而网上的教程都是 ...
- Selenium2使用vncserver启动firefox
web自动化测试使用Selenium2使用vncserver启动firefox 1st startup vncserver(e.g. vncserver :1). 2nd set DISPLAY(e. ...
- 测试自动化:java+selenium3 UI自动化(2) - 启动Firefox
1. selenium和浏览器 基于selenium的这套自动化体系,其实现关键就在于对于各浏览器的顺畅操作. 事实上当selenium刚开始起家的时候,他使用的还是javascript注入的方式来驱 ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
随机推荐
- 使用脚本自动配置matlab安装libsvm和随机森林工具箱
前言 支持向量机(SVM)和随机森林 都是用于分类的机器学习算法. 这里我需要对网上的工具箱在matlab中进行配置. 效果演示: 1.双击运行“自动配置.bat” 2.matlab会自动启动,手动配 ...
- 再谈通过http访问SSAS
问题: 在有些场景下,数据中心会分为不同的服务器场:数据库场和应用程序场.服务器场间有严格的防火墙控制,其中数据库场只能建立从应用程序场的防火墙穿越,也就是说不允许任何客户端直接连接到防火墙. 这种策 ...
- svn在linux上的安装
什么是svnSVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subv ...
- DataSet、DataTable、Json、List 等各种数据的相互转化
1.根据Dataset生成json格式的字符串,不管Dataset里面有多少个表都可以一一生成对应的json字符串,并一次性返回 private string dsToJson(DataSet d ...
- windows 2008 server NTP Server
1. 选择一台服务器作为时间同步服务器. 2. 运行Regedit,打开注册表编辑器. 3. 找到注册表项HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Ser ...
- Create a REST API with Attribute Routing in ASP.NET Web API 2
原文:http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute- ...
- windows下安装python科学计算环境,numpy scipy scikit ,matplotlib等
安装matplotlib: pip install matplotlib 背景: 目的:要用Python下的DBSCAN聚类算法. scikit-learn 是一个基于SciPy和Numpy的开源机器 ...
- 【填坑向】spoj COT/bzoj2588 Count on a tree
这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...
- Java_通过反射调用类中的方法
先上一个基本的封装: /** * 获取classType * * @param type * @param provinceCode * @param cityCode * @return * @th ...
- docker 配置文件引发的问题
好久没有配置 vmware / harbor 了,突然间来了兴趣,结果让我失望了,登陆反复的被refused; 这个是配置文件地址:https://github.com/vmware/harbor/b ...