是否可以使用Selenium WebDriver进行截图?
(注:不含硒遥控器)
是否可以使用Selenium WebDriver进行截图?
(注:不含硒遥控器)
当前回答
塞勒尼斯
captureEntirePageScreenshot | /path/to/filename.png | background=#ccffdd
其他回答
C#
using System;
using OpenQA.Selenium.PhantomJS;
using System.Drawing.Imaging;
namespace example.com
{
class Program
{
public static PhantomJSDriver driver;
public static void Main(string[] args)
{
driver = new PhantomJSDriver();
driver.Manage().Window.Size = new System.Drawing.Size(1280, 1024);
driver.Navigate().GoToUrl("http://www.example.com/");
driver.GetScreenshot().SaveAsFile("screenshot.png", ImageFormat.Png);
driver.Quit();
}
}
}
它需要NuGet包:
PhantomJS 2.0.0 硒。支持2.48.2 硒。WebDriver 2.48.2
它是用。net Framework v4.5.2测试的。
Java
我解决了这个问题。你可以扩展RemoteWebDriver,给它所有的接口,它的代理驱动程序实现:
WebDriver augmentedDriver = new Augmenter().augment(driver);
((TakesScreenshot)augmentedDriver).getScreenshotAs(...); // It works this way
/**
* Take a screenshot and move to the given folder location.
*
* @param driver
* @param folderLocation
* @return screenShotFilePath
*/
public static String captureScreenshot(WebDriver driver, String folderLocation) {
// Variable to store screenshot's file path.
String screenShotFilePath = null;
// Generate unique id for screen shot name.
String uniqueId = UUID.randomUUID().toString().substring(31);
if (driver != null) {
// Generate screenshot as a file
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
// New screenshot file path with having file name
screenShotFilePath = folderLocation + File.separator + uniqueId + ".png";
// Move file to the destination location.
FileUtils.moveFile(scrFile, new File(screenShotFilePath));
}
return screenShotFilePath;
}
硒化/ Java
以下是Selenide项目是如何做到这一点的,这比任何其他方式都要简单:
import static com.codeborne.selenide.Selenide.screenshot;
screenshot("my_file_name");
JUnit:
@Rule
public ScreenShooter makeScreenshotOnFailure =
ScreenShooter.failedTests().succeededTests();
美国小妞TestNG:
import com.codeborne.selenide.testng.ScreenShooter;
@Listeners({ ScreenShooter.class})
Ruby
require 'rubygems'
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :ie
driver.get "https://www.google.com"
driver.save_screenshot("./screen.png")
更多的文件类型和选项可用,您可以在文件takes_screenshot.rb中看到它们。