selenium webdriver 어떻게selenium-webdriver 캡처

2866 단어
자동화 테스트에서 캡처 기능을 자주 사용한다.최근에selenium-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;  

import org.openqa.selenium.WebDriver;  

import org.openqa.selenium.firefox.FirefoxDriver;  

public class ShotScreen {  

  

    /** 

     * @author gongjf 

     * @throws IOException  

     * @throws InterruptedException  

     */  

    public static void main(String[] args) throws IOException, InterruptedException {  

          

        System.setProperty("webdriver.firefox.bin","D:\\Program Files\\Mozilla Firefox\\firefox.exe");    

        WebDriver dr = new FirefoxDriver();  

        dr.get("http://www.51.com");  

                  

        //            

        Thread.sleep(5000);  

        //             D    

        File screenShotFile = ((TakesScreenshot)dr).getScreenshotAs(OutputType.FILE);  

        FileUtils.copyFile(screenShotFile, new File("D:/test.png"));}}  

 

Output Type 인터페이스와Takes Screenshot 인터페이스를 보고 이 두 인터페이스는 같은 개발에서 쓴 것이 아니거나 주석이 업데이트되지 않은 것 같다고 토로했다.OutputType의 설명은 다음과 같습니다.

/**  

 * Defines the output type for a screenshot. See org.openqa.selenium.Screenshot for usage and  

 * examples.  

...  


그리고 거기서 한참 동안 org를 찾았어요.openqa.selenium.Screenshot 인터페이스, 헐, 나중에 생각하면 org.openqa.selenium.TakesScreenshot.
TakesScreenshot에는 다음과 같은 주석이 있습니다.

/** 

 * Capture the screenshot and store it in the specified location. 

 * 

 * 

For WebDriver extending TakesScreenshot, this makes a best effort * depending on the browser to return the following in order of preference: *

    *
  • Entire page
  • *
  • Current window
  • *
  • Visible portion of the current frame
  • *
  • The screenshot of the entire display containing the browser
  • *
* *

For WebElement extending TakesScreenshot, this makes a best effort * depending on the browser to return the following in order of preference: * - The entire content of the HTML element * - The visisble portion of the HTML element * * @param Return type for getScreenshotAs. * @param target target type, @see OutputType * @return Object in which is stored information about the screenshot. * @throws WebDriverException on failure. */


Webelement을 캡처해 봤는데 WebElement 인터페이스가 이런 종류를 실현하지 못했다는 것을 발견했다.한참을 일했지만 페이지의 전체 그림을 캡처할 줄만 알았다.현재 프레임도 캡처한 페이지 전체 그림을 캡처합니다.설마 이 기능이 완벽하지 않은 건 아니겠지, 그래, 이렇게 자기 위안을 말해 봐.
selenium-webdriver는 인터페이스 프로그래밍을 하는데 필요한 기능을 찾기가 정말 어렵다.

좋은 웹페이지 즐겨찾기