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

最新文章

  1. git常见命令
  2. tomcat中的JSP引擎
  3. LeetCode OJ-- Scramble String ***@
  4. 可扩展验证框架 - A2DFramework验证框架使用介绍
  5. VB的if和elseif
  6. 她让我懂得了怎样学习Flash
  7. PowerDesigner 正向工程 和 逆向工程 说明
  8. 2014年度辛星html教程夏季版第六节
  9. Python中lstrip使用心得
  10. 制作安装包工具NSIS
  11. Xcode 新版本如何设置ARC
  12. Apple Swift编程语言入门
  13. nodejs模块学习: connect2解析
  14. Spark 读写hive 表
  15. python之json模块
  16. Study 8 —— 数据类型(列表/list)
  17. linux socket talkclient talkserver示例
  18. idea 换主题
  19. PMP用语集
  20. mac下升级terminal/终端的subversion版本方法

热门文章

  1. UML概述
  2. 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏(几何)
  3. sdut 2158:Hello World!(第一届山东省省赛原题,水题,穷举)
  4. 详谈JavaScript 匿名函数及闭包
  5. Java Print 打印
  6. Angular2 兼容 UC浏览器、QQ浏览器、猎豹浏览器
  7. Windows 下Hadoop的环境变量配置
  8. HQL的第一个程序
  9. Openstack实现共有云VPC的SDN网络
  10. Results from queries can be retrieved into local variables