zoukankan      html  css  js  c++  java
  • TestNG 判断文件下载成功

    用WatchService写一个方法放在onTestStart()方法里监听文件夹的变化. 但是判断下载成功还需要写一个方法, 用来判断什么时候文件从.xlsx.rcdownload改成.xlsx才行 (TODO). 

    package com.tcemo.ui.bean;
    
    import static com.tcemo.ui.bean.ScreenShotOnFailure.SCREEN_SHOT_NAME;
    import static com.tcemo.ui.bean.ScreenShotOnFailure.SCREEN_SHOT_PATH;
    
    import java.io.IOException;
    import java.nio.file.FileSystems;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.nio.file.StandardWatchEventKinds;
    import java.nio.file.WatchEvent;
    import java.nio.file.WatchKey;
    import java.nio.file.WatchService;
    import java.util.List;
    
    import org.testng.ITestContext;
    import org.testng.ITestListener;
    import org.testng.ITestResult;
    
    public class TestngRetryListener implements ITestListener{
        private WatchService watchService;
        public void onTestFailure(ITestResult result) {
            try {
                ScreenShotOnFailure.takeScreenShot();
                System.out.println(result.getMethod().getMethodName()+"failed, the screenshot saved in "
                        + SCREEN_SHOT_PATH +" screenshot name: "
                        + SCREEN_SHOT_NAME);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Override
        public void onTestStart(ITestResult result) {
            // TODO Auto-generated method stub
             // 需要监听的文件目录(只能监听目录)
            String path = "E:\smartesterlocal\download";
            
    
            try {
                watchService = FileSystems.getDefault().newWatchService();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            Path p = Paths.get(path);
            try {
                p.register(watchService, StandardWatchEventKinds.ENTRY_MODIFY,  
                        StandardWatchEventKinds.ENTRY_DELETE,  
                        StandardWatchEventKinds.ENTRY_CREATE);
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }  
            
            Thread thread = new Thread(() -> {
                try {  
                    while(true){  
                        WatchKey watchKey = watchService.take();  
                        List<WatchEvent<?>> watchEvents = watchKey.pollEvents();  
                        for(WatchEvent<?> event : watchEvents){  
                            //TODO 根据事件类型采取不同的操作。。。。。。。  
                            System.out.println("["+path+"/"+event.context()+"]文件发生了["+event.kind()+"]事件");    
                        }  
                        watchKey.reset();  
                    }  
                } catch (InterruptedException e) {  
                    e.printStackTrace();  
                }
            });
            thread.setDaemon(false);
            thread.start();
            
            // 增加jvm关闭的钩子来关闭监听
            Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                try {
                    watchService.close();
                } catch (Exception e) {
                }
            }));
        }
    
    
        @Override
        public void onTestSuccess(ITestResult result) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onTestSkipped(ITestResult result) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onStart(ITestContext context) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onFinish(ITestContext context) {
            // TODO Auto-generated method stub
            
        }
    }
    
    /**
    *@author: Created by QianHJ
    *@date:   2018年4月20日
    *@problem:
    *@answer:
    *@action:
    */
    已完成的监听方法
    package com.tcemo.ui.bean;
    
    import static com.tcemo.ui.bean.AntBrowser.browser;
    
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.commons.io.FileUtils;
    import org.openqa.selenium.OutputType;
    import org.openqa.selenium.TakesScreenshot;
    
    public class ScreenShotOnFailure {
        public static final String SCREEN_SHOT_PATH = "test-output/screen-shot";
        public static String SCREEN_SHOT_NAME = null;
        
        public static void takeScreenShot() throws IOException {
            File screenshotDir = new File(SCREEN_SHOT_PATH);
            if(!screenshotDir.exists()) {
                screenshotDir.mkdirs();
            }
            
            SimpleDateFormat smf = new SimpleDateFormat("yyyyMMddHHmmss");        
            SCREEN_SHOT_NAME = String.valueOf(smf.format(new Date())) + ".jpg";
            FileUtils.copyFile(((TakesScreenshot)browser.getWebDriver()).getScreenshotAs(OutputType.FILE),
                    new File(SCREEN_SHOT_PATH + "/"+ SCREEN_SHOT_NAME));    
        }
    }
    
    /**
    *@author: Created by QianHJ
    *@date:   2018年4月20日
    *@problem:
    *@answer:
    *@action:
    */
    Screenshot代码
  • 相关阅读:
    IOS整体代码复习一
    IOS复习UIActionSheet&UIAlertView
    IOS复习Plist文件的读取和写入
    IOS复习UITextfield&UILabel
    iOS中判断两个圆是否重叠
    iOS指针回调函数
    ios函数指针
    iOS分区
    ios指针第二天
    iOS指针第一天
  • 原文地址:https://www.cnblogs.com/cheese320/p/9152583.html
Copyright © 2011-2022 走看看