3
當前,我正在通過重寫TestListenerAdapter方法onTestFailure和onTestSuccess來分別在TestNG中捕獲失敗和成功的屏幕截圖。爲了做到這一點,你需要指定你想要截圖的驅動程序。使用TestNG運行並行測試時捕獲WebDriver屏幕截圖
我的問題:當在方法級別上並行運行測試時,是否有一種捕獲屏幕截圖的好方法?
爲了並行運行測試,每個單獨的測試都需要一個唯一的驅動程序實例。所以,在任何時候,你都有x個驅動程序實例在運行。當需要捕捉屏幕截圖時,您如何確定使用哪個驅動程序?
代碼摘錄如下:
public class OnFailureListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult tr) {
Screenshots.captureScreenshot(tr);
super.onTestFailure(tr);
}
-
public static void captureScreenshot(ITestResult tr) {
WebDriver driver = TestClass.driver;
if (driver instanceof TakesScreenshot) {
String filename = "path/to/screenshot/file";
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(filename));
} catch (IOException e) { e.printStackTrace(); }
}
我不明白。在你的例子中,只有一個WebDriver實例正在被使用。爲了成功並行運行測試,需要有多個驅動程序實例。當多個單獨的測試試圖一次訪問驅動程序時會發生什麼? – try5tan3
每個測試都會創建自己的實例,驅動程序不會在測試中共享。 –
謝謝!這對我有效。 – try5tan3