zoukankan      html  css  js  c++  java
  • 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()+"
    "+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

  • 相关阅读:
    《海量数据库解决方式》读后感
    HDU-3533-Escape(BFS)
    (017)将一棵二叉查找树重构成链表(keep it up)
    hadoop招聘需求每天都在添加,短短半个月时间,需求量差点儿翻了一番,这是大数据要爆发的节奏么?
    关于Oracle安装完毕后,登录时遇到的错误的解决的方法
    C/C++产生随机数
    android手机SD卡中的android_secure目录
    【Unity Shaders】Lighting Models —— 衣服着色器
    ASM相关视图
    win2003的IIS無法使用,又一次安裝提示找不到iisadmin.mfl文件
  • 原文地址:https://www.cnblogs.com/tobecrazy/p/3599568.html
Copyright © 2011-2022 走看看