发布:2020/9/25 11:51:56作者:管理员 来源:本站 浏览次数:1109
我正在尝试获取在C#中的Selenium WebDriver中执行的测试的屏幕截图。 我正在使用Gallio进行测试。 以下是我的屏幕截图代码:
1
2 3 4 5 6 |
public void TakeScreenshot(IWebDriver driver, string saveLocation)
{ ITakesScreenshot screenshotDriver = driver as ITakesScreenshot; Screenshot screenshot = screenshotDriver.GetScreenshot(); screenshot.SaveAsFile(saveLocation, ImageFormat.Png); } |
我在测试中使用以下代码来截取屏幕截图:
1
2 |
问题是在执行时,该语句将打开一个新的chrome窗口,然后弹出一个错误。 我的目的是拍摄现有运行脚本的屏幕截图。 我应该做些什么改变才能做到这一点?
附言 -是否可以在执行测试时截取屏幕截图而不初始化新驱动程序?
使用带有C#.Net,NUnit的Selenium Webdriver捕获ScreenShot。
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
// 1- Add a reference of System.Drawing in your solution/project.
// 2- use system.Drawing.Imaging namespace in your test. // Here I am capturing the screen shot of Facebook Home page. using System; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; using NUnit.Framework; using System.IO; using System.Collections; using System.Drawing.Imaging; namespace FacebookRegistrationUsingC_Sharp { [TestFixture] public class ScreenShot { IWebDriver driver = null; IWebElement element = null; [SetUp] public void SetUp() { driver = new ChromeDriver("G:\\Selenium_Csharp\\Jar\\chromedriver_win32"); driver.Navigate().GoToUrl("https://www.Facebook.com"); driver.Manage().Window.Maximize(); } [Test] public void TestScreenShot() { Screenshot ss = ((ITakesScreenshot)driver).GetScreenshot(); ss.SaveAsFile("e:\\pande", System.Drawing.Imaging.ImageFormat.Jpeg); } [TearDown] public void TearDown() { driver = null; element = null; } } } |
这是我的解决方案。 我必须创建一个新的显式驱动程序页面,并在该页面中添加屏幕截图方法。 下面是我添加的方法:
1
2 3 4 5 6 7 8 9 |
public Screenshot GetScreenshot()
{ // Get the screenshot as base64. Response screenshotResponse = this.Execute(DriverCommand.Screenshot, null); string base64 = screenshotResponse.Value.ToString(); // ... and convert it. return new Screenshot(base64); } |
对于找不到chromedriver.exe的错误,请将chromedriver.exe文件添加到Visual Studio解决方案,然后在属性窗口中将"复制到输出目录"设置为"始终复制"。
您需要先导航到页面然后再截屏-如果chrome中的默认页面为空白,那么您将看到错误
1
2 |
unknown error: cannot take screenshot
from unknown error: Cannot access contents of url"about:blank". Extension manifest must request permission to access this host. |
否则,将文件保存在C:根目录时,您可能还会遇到权限问题,因此请将屏幕快照保存在子目录中。
下面的代码应该工作:
1
2 3 |
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://www.google.com"); TakeScreenshot(driver, @"C:\devtest\screenshot.png"); |
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4