• 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

  • 相关阅读:
    stl的stack在开发中的应用
    stl的stack在开发中的应用
    SQL Server遍历表中记录的2种方法
    SQL Server遍历表中记录的2种方法
    SQL Server遍历表中记录的2种方法
    SQL Server遍历表中记录的2种方法
    struts中用kindeditor实现的图片上传并且显示在页面上
    struts中用kindeditor实现的图片上传并且显示在页面上
    struts中用kindeditor实现的图片上传并且显示在页面上
    区块链协议新方向-图灵奖得主Macali开发Algorand
  • 原文地址:https://www.cnblogs.com/111testing/p/7188958.html
Copyright © 2020-2023  润新知