专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-963-0016      微信咨询  |  联系我们

在C#中使用Selenium Webdriver的当前窗口截图

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:40:48       共计:3606 浏览

我正在尝试获取在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
IWebDriver driver = new ChromeDriver();
TakeScreenshot(driver, @"C:\screenshot.png");

问题是在执行时,该语句将打开一个新的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");
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:[Selenium With C# 基础教程] Lesson10-浏览器操作 | ·下一条:C#使用selenium的爬虫速度再提升十倍的方法在这

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有