0

C# の Selenium WebDriver で実行されているテストのスクリーンショットを撮ろうとしています。Gallio を使用してテストを実行しています。以下はスクリーンショットの私のコードです:

public void TakeScreenshot(IWebDriver driver, string saveLocation)
{
    ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
    Screenshot screenshot = screenshotDriver.GetScreenshot();
    screenshot.SaveAsFile(saveLocation, ImageFormat.Png);
}

テストで以下のコードを使用してスクリーンショットを撮っています。

IWebDriver driver = new ChromeDriver();
TakeScreenshot(driver, @"C:\screenshot.png");

問題は、実行中にステートメントが新しいクロム ウィンドウを開き、エラーが表示されることです。私の目的は、既存の実行中のスクリプトのスクリーンショットを撮ることです。これを実現するには、どのような変更を行う必要がありますか?

PS - 新しいドライバーを初期化せずにテストの実行中にスクリーンショットを撮る方法はありますか?

4

3 に答える 3

3

C#.Net、NUnit で Selenium Webdriver を使用してスクリーンショットをキャプチャする。

// 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;
        }
    }
}
于 2015-06-04T10:57:57.537 に答える
0

chromedriver.exe が見つからないというエラーについては、chromedriver.exe ファイルを Visual Studio ソリューションに追加し、プロパティ ウィンドウで [出力ディレクトリにコピー] を [常にコピー] に設定します。

スクリーンショットを撮る前にページに移動する必要があります - クロムのデフォルトのページが空白の場合、エラーが表示されます

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:\ ルートにファイルを保存するときに権限の問題が発生する可能性があるため、スクリーンショットをサブ ディレクトリに保存してください。

次のコードが機能するはずです。

        IWebDriver driver = new ChromeDriver();
        driver.Navigate().GoToUrl("http://www.google.com");
        TakeScreenshot(driver, @"C:\devtest\screenshot.png");

PS: 表示されるエラーの詳細を常に投稿して、より適切なサポートを提供できるようにしてください。

于 2013-10-01T00:48:05.560 に答える
0

これが私の解決策です。新しい明示的なドライバー ページを作成し、そのページにスクリーンショット メソッドを追加する必要がありました。以下は私が追加した方法です:

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);
}
于 2013-10-02T20:25:43.857 に答える