在Selenium 2中截取测试截图的最佳方法是什么?

Jam*_*mes 49 c# selenium screenshot webdriver functional-testing

我需要一种方法来截取我的功能测试.现在我正在使用Selenium 2和C#绑定.我非常想在测试结束时截取屏幕截图,以确保显示所需的页面.您是否知道我可以将任何特定工具合并到我的C#代码中以触发屏幕截图?我找不到内置的Selenium 2解决方案(没有查看).

Aut*_*ter 71

要在Selenium 2中执行屏幕截图,您需要执行以下操作

driver = new FireFoxDriver(); // Should work in other Browser Drivers
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk");
Screenshot ss = ((ITakesScreenshot) driver).GetScreenshot();

//Use it as you want now
string screenshot = ss.AsBase64EncodedString;
byte[] screenshotAsByteArray = ss.AsByteArray;
ss.SaveAsFile("filename", ImageFormat.Png); //use any of the built in image formating
ss.ToString();//same as string screenshot = ss.AsBase64EncodedString;
Run Code Online (Sandbox Code Playgroud)

该代码应该可以工作,因为我在IronPython Repl中快速测试了它.请参阅下面的IronPython代码

import clr
clr.AddReference("WebDriver.Common.dll")
clr.AddReference("WebDriver.Firefox.dll")
from OpenQA.Selenium import *
from OpenQA.Selenium.Firefox import *
driver = FirefoxDriver()
driver.Navigate().GoToUrl("http://www.theautomatedtester.co.uk")
s = driver.GetScreenshot()
s.AsBaseEncodedString
# HUGE string appears in the REPL
Run Code Online (Sandbox Code Playgroud)

  • 现在不推荐使用ImageFormat.Png,而是使用ScreenshotImageFormat.Png (4认同)

Too*_*kit 31

var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();   
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
Run Code Online (Sandbox Code Playgroud)

  • @Toolkit`ImageFormat`现在已被弃用,而改用`ScreenshotImageFormat`。 (3认同)

小智 13

我不知道这是否重要,但是当我用c#写作时,我最终不得不施展司机.

就像是:

Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot();


Dee*_*eeb 6

只需在一行代码中使用扩展方法TakeScreenshot()即可.

IWebDriver driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("Your_Homepage_Url");

driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`TakeScreenshot()`方法是一种扩展方法,需要安装`Selenium.Support` NuGet包. (4认同)