zoukankan      html  css  js  c++  java
  • 截图-----Selenium快速入门(十二)

      在自动化测试过程中,截图是常见的操作,因为有时候单靠程序无法判断是否已得到期望的结果,所以需要截图判断。又或者截图是作为判断的存证。Selenium的截图操作也是非常简单,而且自带了一个文件操作类FileHandler,所以截图并保存到硬盘的操作,在Selenium是非常简单的。

      ChromeDriver等各类浏览器的driver都继承自RemoteWebDriver,而RemoteWebDriver实现了TakesScreenshot接口,换言之,我们常用的各种driver,ChromeDriverEdgeDriverFirefoxDriverInternetExplorerDriverOperaDriverSafariDriver,既实现了WebDriver接口,也实现了TakesScreenshot接口,因此我们可以像使用WebDriver接口一样,使用TakesScreenshot。而TakesScreenshot接口只有一个方法:

    <X> X getScreenshotAs(OutputType<X> target) throws WebDriverException

      因此,我们可以这样使用: 

    //截图作为文件保存
    File screenshotFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
     
    //将图片存为base64
    String screenshotBase64 = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BASE64);

      而FileHandler,提供了一些静态方法,满足我们常用的文件操作需要,例如

    //将一个文件复制到另一个地方
    static void copy(java.io.File from, java.io.File to) 

      结合上面两个方法,我们就可以简单的实现截图,并将图片保存到指定位置。

      以下是相关的代码:

         System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/SeleniumTest/tools/chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            
            driver.get("http://www.cnblogs.com");
            
            WebDriverWait wait=new WebDriverWait(driver, 5);
            wait.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("沪ICP备09004260号")));
            
            File screenShot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
            
            //如果保存的文件夹不存在,则建立
            File saveDir=new File("D:\temp");
            if(!saveDir.exists())
                FileHandler.createDir(saveDir);
            
            //保存路径
            File savePath=new File("D:\temp\screenshot.png");
            //如果没有写权限,则增加写权限
            FileHandler.makeWritable(savePath);
            //复制到指定路径
            FileHandler.copy(screenShot, savePath);
            

      打开我们的文件夹,看看结果,确实截图成功,但只截到本屏幕,并不会将整个页面截取下来,下面是截到的图片

      

  • 相关阅读:
    SpringMVC文件上传
    JavaSE——链表集合
    java 线程Thread 技术--1.5Lock 与condition 演示生产者与消费模式
    XML 解析技术
    java 线程Thread 技术--方法演示生产与消费模式
    java 线程Thread 技术--线程状态与同步问题
    java 线程Thread 技术--创建线程的方式
    java 线程Thread 技术--线程创建源码解释
    JDK1.5 Excutor 与ThreadFactory
    springboot学习记录
  • 原文地址:https://www.cnblogs.com/devtester/p/8663053.html
Copyright © 2011-2022 走看看