web-dev-qa-db-ja.com

Selenium 2でテストのスクリーンショットを撮る最良の方法は?

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

46
James

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
67
AutomatedTester
var driver = new InternetExplorerDriver();
driver.Navigate().GoToUrl("http://www.google.com");
var ss = driver.GetScreenshot();   
ss.SaveAsFile("ss.png", System.Drawing.Imaging.ImageFormat.Png);
31
Toolkit

それが重要かどうかはわかりませんが、C#で書いているときにドライバーをキャストしなければならなくなりました。

何かのようなもの:

スクリーンショットss =((ITakesScreenshot)driver).GetScreenshot(); 
12
user800612

1行のコードでTakeScreenshot()拡張メソッドを使用するだけです。

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

driver.TakeScreenshot().SaveAsFile("file_name_string", ImageFormat.Jpeg);
6
Deeb