0

我正在使用 selenium webdriver 在我的测试用例中创建屏幕截图,虽然这些确实显示了我的 Web 应用程序中可见的内容,但它没有显示浏览器创建的弹出窗口。

我发现在某些情况下,在 IE 中,我的应用程序会在 IE 中触发 JS 调试弹出窗口。这当然是一个错误并破坏了我的其余测试,但屏幕截图没有显示错误。我认为这是因为它是一个 IE 原生弹出窗口,而不是我的应用程序的一个触发器。

是否可以将其包含在屏幕截图中?我正在考虑可能创建屏幕截图,Robot#createScreenCapture()但如果浏览器最小化,显然不会显示任何有用的东西。

所以,一些可能的解决方案: - 你能检测到浏览器中是否弹出错误消息 - 是否可以在运行时最大化/聚焦浏览器?- 你能从 selenium 截屏并显示弹出窗口吗?

4

3 回答 3

1

Selenium 将截取代表浏览器向最终用户显示的渲染 DOM 的屏幕截图,方法是截取浏览器正在显示的渲染图像并复制它。

它不会截取桌面屏幕截图,因此显示的屏幕截图不会显示任何覆盖浏览器窗口的内容。JavaScript 警报不是渲染 DOM 的一部分,因此您不会在 Selenium 屏幕截图中看到这些。

于 2013-07-04T11:59:37.653 回答
0

也许是因为驱动程序没有激活警报/窗口?

你可以尝试这样的事情:

    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();

希望能帮助到你。

于 2013-07-04T11:36:53.117 回答
0

您可以按如下方式使用它:

FileUtils.copyFile(((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE), new File("E:\\ScreenShot\\screenshot.png"));
于 2017-01-03T11:38:42.870 回答