簡體   English   中英

Selenium Webdriver屏幕截圖不顯示驅動程序錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM