Selenium WebDriver를 사용하여 스크린 샷을 찍을 수 있는지 아는 사람이 있습니까? (참고 : 셀레늄 RC가 아님)
답변
자바
네 가능합니다. 다음 예제는 Java로되어 있습니다.
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));
답변
파이썬
각 WebDriver에는 .save_screenshot(filename)
메소드가 있습니다. 따라서 Firefox의 경우 다음과 같이 사용할 수 있습니다.
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('http://www.google.com/')
browser.save_screenshot('screenie.png')
혼란스럽게도 .get_screenshot_as_file(filename)
같은 일을 하는 방법도 있습니다.
.get_screenshot_as_base64()
(html로 임베드) 및 .get_screenshot_as_png()
(이진 데이터 검색 ) 메소드도 있습니다 .
WebElement에는 .screenshot()
유사하게 작동하지만 선택한 요소 만 캡처 하는 메소드가 있습니다.
답변
씨#
public void TakeScreenshot()
{
try
{
Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();
ss.SaveAsFile(@"D:\Screenshots\SeleniumTestingScreenshot.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
답변
자바 스크립트 (Selenium-Webdriver)
driver.takeScreenshot().then(function(data){
var base64Data = data.replace(/^data:image\/png;base64,/,"")
fs.writeFile("out.png", base64Data, 'base64', function(err) {
if(err) console.log(err);
});
});
답변
루비
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :ie
driver.get "https://www.google.com"
driver.save_screenshot("./screen.png")
더 많은 파일 유형과 옵션을 사용할 수 있으며 takes_screenshot.rb에서 볼 수 있습니다
답변
자바
이 문제가 해결되었습니다. RemoteWebDriver
프록시 드라이버가 구현하는 모든 인터페이스를 제공 하도록를 보강 할 수 있습니다 .
WebDriver augmentedDriver = new Augmenter().augment(driver);
((TakesScreenshot)augmentedDriver).getScreenshotAs(...); //works this way
답변
PHP (PHPUnit)
PHPUnit_Selenium 확장 버전 1.2.7을 사용합니다.
class MyTestClass extends PHPUnit_Extensions_Selenium2TestCase {
...
public function screenshot($filepath) {
$filedata = $this->currentScreenshot();
file_put_contents($filepath, $filedata);
}
public function testSomething() {
$this->screenshot('/path/to/screenshot.png');
}
...
}