51

機能テストのスクリーンショットを撮る方法が必要です。現在、C#バインディングでSelenium2を使用しています。テストの最後にスクリーンショットを撮り、目的のページが表示されていることを確認したいと思います。スクリーンショットをトリガーするC#コードに組み込むことができることを知っている特定のツールはありますか?組み込みのSelenium2ソリューションを(見渡さずに)見つけることができませんでした。

4

13 に答える 13

75

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;

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
于 2010-07-28T09:01:26.003 に答える
32
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();   
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
于 2011-10-24T06:26:01.117 に答える
13

それが問題かどうかはわかりませんが、c# で書いているときにドライバーをキャストする必要がありました。

何かのようなもの:

スクリーンショット ss = ((ITakesScreenshot)driver).GetScreenshot();
于 2011-06-17T01:06:10.243 に答える
3
  1. System.Drawingソリューション/プロジェクトにの参照を追加します。
  2. System.Drawing.Imagingテストで名前空間を使用します。

ここでは、Facebook のホームページのスクリーン ショットをキャプチャしています。

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:54:42.287 に答える
1
public void TakeScreenshot(string saveLocation) {
        var location = GetPath() + _name + "\\" + saveLocation + ".png";
        var ssdriver = _driver as ITakesScreenshot;
        var screenshot = ssdriver.GetScreenshot();
        screenshot.SaveAsFile(location, ImageFormat.Png);
    }

このコードは、スクリーンショットを撮るのに役立ちます

于 2015-11-25T12:02:05.043 に答える
0

System.Drawing.Imaging 参照を使用します。次のコードは、スクリーンショットを撮るために使用できます。

IWebDriver driver = new FirefoxDriver();
ITakesScreenshot screenshotDriver = driver as ITakesScreenshot;
Screenshot screenshot = screenshotDriver.GetScreenshot();
String fp = "D:\\" + "snapshot" + "_"+ DateTime.Now.ToString("dd_MMMM_hh_mm_ss_tt") + ".png";
screenshot.SaveAsFile(fp, ImageFormat.Png);

注: タイムスタンプには次の 2 つの利点があります。2) SaveAsFile 関数は、既存のファイルを上書きします。そのため、DateTime はさまざまなファイルの作成に役立ちます。

于 2015-10-01T14:06:18.947 に答える
-1

セレンを使用すると、私がよく知っている 2 つの呼び出しがありました:captureEntirePageScreenshotcaptureScreenshot. これらの呼び出しを調べて、目的を達成できるかどうかを確認することをお勧めします。

于 2010-07-27T17:14:13.907 に答える