selenium web driver 实现截图功能【转】

在验证某些关键步骤时,需要截个图来记录一下当时的情况

Webdriver截图时,需要引入

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;

截图方法

public static void snapshot(TakesScreenshot drivername, String filename)
  {
      // this method will take screen shot ,require two parameters ,one is driver name, another is file name

    String currentPath = System.getProperty("user.dir"); //get current work folder
    System.out.println(currentPath);
    File scrFile = drivername.getScreenshotAs(OutputType.FILE);
        // Now you can do whatever you need to do with it, for example copy somewhere
        try {
            System.out.println("save snapshot path is:"+currentPath+"/"+filename);
            FileUtils.copyFile(scrFile, new File(currentPath+"\\"+filename));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("Can‘t save screenshot");
            e.printStackTrace();
        }
        finally
        {

            System.out.println("screen shot finished");
        }
  }

以下任务:

1.使用selenium打开百度,截图;

2.输入selenium关键字,截图;

3.搜索 并打开 selenium的百度百科,截图;

具体代码如下:

  1 package baidu;
  2
  3
  4
  5 import java.io.File;
  6 import java.io.IOException;
  7
  8
  9
 10 import org.apache.commons.io.FileUtils;
 11
 12 import org.openqa.selenium.By;
 13 import org.openqa.selenium.OutputType;
 14 import org.openqa.selenium.TakesScreenshot;
 15 import org.openqa.selenium.WebDriver;
 16 //import org.openqa.selenium.WebDriver.Navigation;
 17 import org.openqa.selenium.WebElement;
 18 import org.openqa.selenium.chrome.ChromeDriver;
 19
 20
 21
 22
 23 public class selenium  {
 24
 25
 26
 27   public static void snapshot(TakesScreenshot drivername, String filename)
 28   {
 29       // this method will take screen shot ,require two parameters ,one is driver name, another is file name
 30
 31
 32     File scrFile = drivername.getScreenshotAs(OutputType.FILE);
 33         // Now you can do whatever you need to do with it, for example copy somewhere
 34         try {
 35             System.out.println("save snapshot path is:E:/"+filename);
 36             FileUtils.copyFile(scrFile, new File("E:\\"+filename));
 37         } catch (IOException e) {
 38             // TODO Auto-generated catch block
 39             System.out.println("Can‘t save screenshot");
 40             e.printStackTrace();
 41         }
 42         finally
 43         {
 44             System.out.println("screen shot finished");
 45         }
 46   }
 47
 48     public static void main (String [] args) throws InterruptedException
 49     {
 50
 51
 52         String URL="http://www.baidu.com";
 53         System.setProperty("webdriver.chrome.driver", "E:\\chromedriver.exe");
 54         WebDriver driver = new ChromeDriver();
 55         driver.get(URL);
 56         //max size the browser
 57         driver.manage().window().maximize();
 58  /*
 59         Navigation navigation = driver.navigate();
 60          navigation.to(URL);*/
 61          Thread.sleep(2000);
 62          snapshot((TakesScreenshot)driver,"open_baidu.png");
 63          //WebElement reg=driver.findElement(By.name("tj_reg"));
 64          //reg.click();
 65          //    WebElement keyWord = driver.findElement(By.id("kw1"));
 66
 67          //find the element
 68          WebElement keyWord = driver.findElement(By.xpath("//input[@id=‘kw1‘]"));
 69          keyWord.clear();
 70         //send key words
 71          keyWord.sendKeys("Selenium");
 72          Thread.sleep(3000);
 73           snapshot((TakesScreenshot)driver,"input_keyWord.png");
 74
 75
 76
 77           WebElement submit = driver.findElement(By.id("su1"));
 78
 79           System.out.println(submit.getLocation());
 80           submit.click();
 81           //System.out.println(driver.getWindowHandle());
 82          Thread.sleep(5000);
 83
 84         // System.out.println(driver.getPageSource());
 85
 86         String pageSource=driver.getPageSource();
 87        //  System.out.println(pageSource);
 88         //WebElement link =driver.findElement(By.xpath(SELENIUM_LINK));
 89         WebElement link =driver.findElement(By.xpath("//*[@id=\"1\"]/h3/a"));     //*[@id="1"]/h3/a
 90         link.click();
 91         Thread.sleep(5000);
 92         driver.switchTo().window(driver.getWindowHandles().toArray(new String[0])[1]);
 93
 94         //get page title
 95         System.out.println(driver.getTitle());
 96          Thread.sleep(5000);
 97     //     navigation.back();
 98           snapshot((TakesScreenshot)driver,"open_bake.png");
 99          System.out.println(driver.getTitle()+"\n"+driver.getCurrentUrl());
100
101
102
103           driver.quit();
104
105
106     }
107
108 }

在百度搜索结果中,拿到你想要的elements,可以使用浏览器的查看元素,通过xpath方法获取



console输出:

Starting ChromeDriver (v2.9.248315) on port 33834
save snapshot path is:E:/open_baidu.png
screen shot finished
save snapshot path is:E:/input_keyWord.png
screen shot finished
(858, 179)
Selenium_百度百科
save snapshot path is:E:/open_bake.png
screen shot finished
Selenium_百度百科
http://baike.baidu.com/subview/478050/6464537.htm?fr=aladdin

selenium web driver 实现截图功能【转】

时间: 2024-09-30 08:35:22

selenium web driver 实现截图功能【转】的相关文章

25+ Useful Selenium Web driver Code Snippets For GUI Testing Automation

本文总结了使用Selenium Web driver 做页面自动化测试的一些 tips, tricks, snippets. 1. Chrome Driver 如何安装 extensions 两种方式 a) Packed (.crx file) --  crx为Chrome的插件后缀名,FireFox的是xpi ChromeOptions options = new ChromeOptions(); options.addExtensions(new File("/path/to/extensi

Selenium web driver对于三大浏览器的版本支持总结

Selenium没有传说中的兼容三大浏览器,  在驱动浏览器执行自动化测试的时候还是有一些问题的.  尤其是driver和Selenium版本不一致,他们各自支持的浏览器版本不一样. chromedriver 对于chrome浏览器的支持    2.3版本的driver支持到chrome 30. chromedriver2.9版本 支持至少31以上的, 向下不兼容.如chrome29   会报错最低支持31以上的chrome IEDriverServer.exe 支持到IE8,IE9  不支持I

封装selenium自动化框架中的截图功能

对selenium自带的截图功能进行封装: 以下为封装的代码,自定义一个.py文件即可,图片路径自己设置一个. 1 #coding:utf-8 2 3 class Screen(object): 4 ''' 5 封装的截图类,webdriver自带的get_screenshot_as_file() 6 在使用过程中,注意driver参数的传递 7 ''' 8 def __init__(self, driver): 9 ''' 10 写一个构造函数,有一个参数driver 11 ''' 12 se

Selenium Webdriver——实现截图功能

截图方法 1 public static void snapshot(TakesScreenshot drivername, String filename) 2 { 3 // this method will take screen shot ,require two parameters ,one is driver name, another is file name 4 5 String currentPath = System.getProperty("user.dir");

自动化测试由浅入深--基础篇之Selenium RC和web Driver实现原理

今天开始写自动化的东西,以后可能会穿插其他的东西,这样为了符合处于各个阶段的测试爱好者.今天笔者就开始讲自动化测试相关的东西了.今天先讲原理. Selenium RC实现原理,我先在网络上找了一个图,如下所示: 大家可以清晰的看到,简单来说,就是我们先用编程语言,写好控制程序,然后通过Remote Control Server 去控制浏览器,按照自己写好的程序去执行.大家也可以看到,selenium支持很多语言,java,Ruby,Python,PHP等,你可以选择你喜欢的任何语言. 下面我们看

Selenium - Web自动化测试的基本操作实现

Selenium - Web自动化测试的基本操作实现 摘自https://www.jianshu.com/p/0d5cc5503f91 摘要:  之前用Selenium做UI自动化测试从初学到熟练碰到过很多问题,这里就不一一细说了,所以把最基本的操作都写在了一起,包括:控制浏览器,操作元素,鼠标事件,键盘事件,设置元素等待,多表单/窗口切换,警告框处理,上传文件,操作Cookie,调用JavaScript控制浏览器滚动条,窗口截图. 时间紧急,没有仔细整理,望读者见谅~~ 目录 1.控制浏览器

Selenium Web 自动化 - 如何找到元素

Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp 2. 定位方式解析 Selenium WebDriver 提供一个先进的技术来定位 web 页面元素.Selenium 功能丰富的API 提供了多个定位策略如:Name.ID.CSS 选择器.XPath 等等,如下图所示: 一般会用ID来定位,因为它是唯一的,xpath也比较通用,火狐浏览器插件:f

Selenium Web 自动化 - Selenium常用API

Selenium Web 自动化 - Selenium常用API 2016-08-01 1 WebElement相关方法2 iFrame的处理3 操作下拉选择框4 处理Alert5 处理浏览器弹出的新窗口6 执行JS脚本7 等待元素加载8 模拟键盘操作9 设置浏览器窗口大小10 上传文件11 Selenium处理HTML5 1 WebElement相关方法 Method   Summary void clear() If   this element is a text entry elemen

Selenium Web 自动化 - Selenium(Java)环境搭建

Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 第1章 Selenium环境搭建 1.1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.2 安装和配置JDK 安装目录尽量不要有空格  D:\Java\jdk1.8.0_91; D:\Java\jre8 设置环境变量: “我的电脑”->右键->“