EventFiringWebDriver网页事件监听(二)
public class SeleniumDemo {
/**
* @param args
*/
public static void main(String[] args) {
WebDriver driver = new FirefoxDriver();
Navigation navigate = driver.navigate();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
//注册事件
eventDriver.register(new MyWebDriverListener());
//浏览特定网页
eventDriver.navigate().to("http://www.jd.com/");
//点击按钮
WebElement loginLink = eventDriver.findElement(By.partialLinkText("登"));
loginLink.click();
//在搜索框输入内容
eventDriver.findElement(By.id("kw")).sendKeys("诛仙剑阵");
//故意写一个错误操作, 使selenium产生异常
try{
eventDriver.findElement(By.id("番天印"));
}catch(Exception e){
e.printStackTrace();
}
}
}
下面是我自己写的监听器 MyWebDriverListener
public class MyWebDriverListener implements WebDriverEventListener{
@Override
public void onException(Throwable throwable, WebDriver driver) {
SimpleDateFormat format = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
String dateString = format.format(new Date());
File srcFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try{
File screenShot = new File("D:\\"+dateString+".png");
FileUtils.copyFile(srcFile, screenShot);
}catch(Exception e){
e.printStackTrace();
}
System.out.println("发生异变,原因是: "+throwable.getMessage());
System.out.println("截图保存在: "+"D:\\"+dateString+".png");
}
@Override
public void afterNavigateTo(String url, WebDriver driver) {
System.out.println("afterNavigateTo: "+url);
System.out.println("afterNavigateTo by driver: "+driver.getCurrentUrl());
}
@Override
public void beforeClickOn(WebElement element, WebDriver driver) {
System.out.println("单机页面元素的属性: "+element.getAttribute("value"));
}
@Override
public void beforeFindBy(By by, WebElement element, WebDriver driver) {
System.out.println("查找元素的条件是: "+ by.toString());
}
@Override
public void afterChangeValueOf(WebElement element, WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterClickOn(WebElement element, WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterFindBy(By by, WebElement element, WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterNavigateBack(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterNavigateForward(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterNavigateRefresh(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void afterScript(String url, WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void beforeChangeValueOf(WebElement element, WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void beforeNavigateBack(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void beforeNavigateForward(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void beforeNavigateRefresh(WebDriver driver) {
// TODO Auto-generated method stub
}
@Override
public void beforeNavigateTo(String url, WebDriver driver) {
System.out.println("beforeNavigateTo: "+url);
System.out.println("beforeNavigateTo by driver : "+driver.getCurrentUrl());
}
@Override
public void beforeScript(String url, WebDriver driver) {
// TODO Auto-generated method stub
}
}
以上的监听器可以满足以下需求:
1.执行打开网页的操作室, 需要分别记录打开前和之后的URL地址.
2.在查找某个页面元素时候, 查找之前和之后都需要记录查找条件
3.在对页面进行单机操作室, 单击前需要记录元素的查找条件, 单机后记录URL地址
4.在对页面元素的值进行更改, 需要分别记录更改前的值和更改后的值
5.在发生异常的时候, 需要进行截图, 将截图文件保存在D:\ , 用当前日期命名文件
原文章出处:http://blog.csdn.net/slowsnowscar/article/details/52507288
EventFiringWebDriver网页事件监听(二)的更多相关文章
- EventFiringWebDriver网页事件监听(一)
Selenium提供了很多的event listening functions来跟踪脚本执行过程中的events. How it works? 在注册了listener的webDriver里面,这些l ...
- 关于实现自定义Dialog和实现Dialog里view的事件监听的两种方法
一.自定义dialog. 二.实现dialog里view的事件监听 1.自定义dialog比较简单.在实例化new的时候,加入样式,布局就行了.或者重写dialog. 2.实现dialog里view的 ...
- WebView使用详解(二)——WebViewClient与常用事件监听
登录|注册 关闭 启舰 当乌龟有了梦想…… 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书 免费直播:AI时代,机器学习如何入门? 程序员8 ...
- Android事件监听(二)——点击鼠标事件
Button.ImageButton事件监听(setOnClickListener) 方法一:通过匿名内部类实现 代码如下: package com.note.demo2; import androi ...
- Vue学习笔记(二)动态绑定、计算属性和事件监听
目录 一.为属性绑定变量 1. v-bind的基本使用 2. v-bind动态绑定class(对象语法) 3. v-bind动态绑定class(数组语法) 4. v-bind动态绑定style(对象语 ...
- taro 填坑之路(二)taro 通过事件监听 实现组件间传值
1.组件传值的方式 2.事件监听原理 3.事件管理器 utils/event.js /** * 事件池(事件管理器) * 通过事件监听传值 */ class Event { constructor() ...
- Java中用得比较顺手的事件监听
第一次听说监听是三年前,做一个webGIS的项目,当时对Listener的印象就是个"监视器",监视着界面的一举一动,一有动静就触发对应的响应. 一.概述 通过对界面的某一或某些操 ...
- .NET事件监听机制的局限与扩展
.NET中把“事件”看作一个基本的编程概念,并提供了非常优美的语法支持,对比如下C#和Java代码可以看出两种语言设计思想之间的差异. // C#someButton.Click += OnSomeB ...
- [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播
-->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...
随机推荐
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...
- 判断asp.net中session过期方法的比较
重写继承page的OnInit()虚方法,在需要的界面上,继承这个类. 1.新建继承page类的类JudgeSession,实现接口成员. 2.重写OnInit()方法,判断session情况. 3. ...
- python入门(九):网络编程和多线程
一.网络编程 Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. ...
- sizeof 数组与指针
在学习指针的时候,得到指针的定义和数组的定义一样,但是这时候就很好奇,指针只是一个地址,那数组和指针一样的话,sizeof时怎么得知其长度呢. 于是百度了下面的回复: 千万不要把数组名看成指针,尽管有 ...
- HDU 1058 Humble Numbers (动规+寻找丑数问题)
Humble Numbers Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- 复习及总结--.Net线程篇(3)
不幸的发现,原来多线程的东西还有好多. 不只是一个Thread就能把事情做完的,好吧,孤陋寡闻了 这里总结下 复习及总结--.Net线程篇(2)里的两个概念AppDomain和ThreadPool ...
- C语言数组元素的查询
在实际开发中,经常需要查询数组中的元素.例如,学校为每位同学分配了一个唯一的编号,现在有一个数组,保存了实验班所有同学的编号信息,如果有家长想知道他的孩子是否进入了实验班,只要提供孩子的编号就可以,如 ...
- java后台高德经纬度转地理位置信息
import java.util.LinkedList;import java.util.List; import org.apache.http.HttpResponse;import org.ap ...
- Linux中chown和chmod的区别和用法(转)
chmod修改第一列内容,chown修改第3.4列内容: chown用法: 用来更改某个目录或文件的用户名和用户组. chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) 例1:cho ...
- Javascript中的window.event.keyCode使用介绍
<body onkeydown=" alert(window.event.keyCode)"> <body onkeydown="if(window.e ...