博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
EventFiringWebDriver网页事件监听(二)
阅读量:7283 次
发布时间:2019-06-30

本文共 3983 字,大约阅读时间需要 13 分钟。

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

你可能感兴趣的文章
自定义android的tab样式
查看>>
查询 哪张表 有某字段
查看>>
leetcode700
查看>>
IOS 多线程编程指南【中文完整翻译版】(转载)
查看>>
如何取消异步等待
查看>>
(转)C#_WinForm接收命令行参数
查看>>
Java Web系列:JDBC 基础
查看>>
Codeforces Beta Round #9 (Div. 2 Only) B. Running Student 水题
查看>>
Educational Codeforces Round 12 F. Four Divisors 求小于x的素数个数(待解决)
查看>>
PHPer书单
查看>>
沉浸式导航栏
查看>>
Python中docstring文档的写法
查看>>
SSH配置文件和SSM配置文件的写法
查看>>
Spring Data 官方文档》Reference Documentation至5.2. Examples Repository
查看>>
数据结构之栈和队列
查看>>
springMVC post方式乱码解决方案
查看>>
Shell 历史记录异地留痕审计与监控
查看>>
机器学习理论研究方法探讨
查看>>
日志服务(原SLS)新功能发布(15)--控制台支持查看协同消费组(ConsumerGroup)消费进度...
查看>>
深入Protobuf源码-概述、使用以及代码生成实现
查看>>