[英]Selenium Webdriver screenshots do not show driver errors
我正在使用selenium webdriver在測試用例中創建屏幕截圖,盡管這些確實顯示了Web應用程序中可見的內容,但它不顯示瀏覽器創建的彈出窗口。
我發現在某些情況下,IE中的應用會觸發IE中的JS調試彈出窗口。 當然,這是一個錯誤,並且破壞了我的其余測試,但是屏幕截圖並未顯示該錯誤。 我認為這是因為它是IE本機彈出窗口,而不是由我的應用程序觸發。
可以將其包含在屏幕截圖中嗎? 我當時在考慮使用Robot#createScreenCapture()
創建屏幕截圖,但是如果將瀏覽器最小化,那顯然不會顯示任何有用的信息。
因此,有幾種可能的解決方案:-您能否檢測到瀏覽器中是否彈出錯誤消息?-是否可以在運行時最大化/聚焦瀏覽器? -您可以從硒屏幕截圖中顯示彈出窗口嗎?
Selenium將截取一個截圖,該截圖表示瀏覽器向最終用戶顯示的渲染DOM,方法是截獲瀏覽器正在顯示的渲染圖像並對其進行復制。
它不需要桌面屏幕截圖,因此顯示的屏幕截圖不會顯示瀏覽器窗口中的任何內容。 JavaScript警報不是呈現的DOM的一部分,因此您不會在Selenium屏幕截圖中看到這些警報。
也許是因為驅動程序沒有激活警報/窗口?
您可以嘗試這樣的事情:
private void CheckForOtherWindows()
{
//Check for any other window open
if (driver.WindowHandles.Count > 0)
{
foreach (string window in driver.WindowHandles)
{
driver.SwitchTo().Window(window);
TakeScreenshot();
}
}
//Check for alert window
try
{
driver.SwitchTo().Alert();
TakeScreenshot();
}
catch
{
//Nothing
}
}
這未經測試,不確定是否可行。 只是給出想法。 :)
編輯:最大化窗口很容易:
driver.Manage().Window.Maximize();
希望能幫助到你。
您可以如下使用:
FileUtils.copyFile(((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE), new File("E:\\ScreenShot\\screenshot.png"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.