[英]Screenshot in C# on Selenium Grid
在針對硒網格運行測試時嘗試拍攝屏幕截圖時,我遇到一個奇怪的問題
public void TakeScreenshot(object methodName)
{
try
{
Screenshot ss = ((ITakesScreenshot)_driver).GetScreenshot();
var filePath = AppDomain.CurrentDomain.BaseDirectory + "\\..\\..\\Screenshots\\" + methodName + ".png";
ss.SaveAsFile(filePath);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
throw;
}
}
我有以下方法來截取屏幕截圖,但是當它在網格上運行時,即使測試通過了,我也會遇到以下失敗。
System.InvalidOperationException:會話[(null externalkey)]不可用,也不在最近的1000個終止的會話中。
當我在本地運行它時,我得到以下內容
OpenQA.Selenium.WebDriverException:引發了具有null響應的異常,該異常將HTTP請求發送到URL http:// localhost:54408 / session // screenshot的遠程WebDriver服務器。 異常的狀態為ConnectFailure,並且消息為:無法連接到遠程服務器
但是,對於這兩種環境,我都得到了屏幕截圖,但這未通過測試。 有誰知道用C#截圖硒的最佳方法?
更新-我發現這似乎只是在測試完成后才發生,我在[BeforeScenario]中放置了完全相同的代碼,並且沒有出錯,因此它在測試結束時發生了...
由於這些評論,我發現了為什么會這樣。
我收到該錯誤的原因是沒有驅動程序,沒有驅動程序的原因是由於[AfterScenario]被多次調用,因此第二次運行時沒有驅動程序,因此無法拍攝屏幕截圖。
我的after場景被多次調用的原因是因為它在我創建的基類中,該基類由每個step類繼承。
一旦我創建了一個新類,並將after / before場景移到了自己的單獨類中,那么我的after場景只被調用了一次,錯誤就消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.