当前位置: 首页 > 知识库问答 >
问题:

Selenium Webdriver屏幕截图不显示驱动程序错误

阴雪风
2023-03-14

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

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

有没有可能在截图中包含这一点?我想用Robot#createScreenCapture()创建屏幕截图,但如果浏览器最小化,显然不会显示任何有用的内容。

因此,有几个可能的解决方案:-您是否可以检测浏览器中是否会弹出错误消息-是否可以在运行时最大化/聚焦浏览器?-你能从selenium中截图并显示弹出窗口吗?

共有3个答案

汪鸿波
2023-03-14

您可以按如下方式使用:

FileUtils.copyFile(((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE), new File("E:\\ScreenShot\\screenshot.png"));
罗甫
2023-03-14

可能是因为驾驶员未激活警报/车窗?

你可以尝试这样的方法:

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

希望能有帮助。

岳佐
2023-03-14

Selenium将截取一个屏幕截图,该截图表示浏览器向最终用户显示的渲染DOM,截取浏览器正在显示的渲染图像并复制该图像。

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

 类似资料:
  • 我试着用java selenium web驱动程序中的TakeScreenshot来截屏。当我在页面中使用scrollTo(x, y)滚动特定数量时,TakeScreenshot方法会给我屏幕截图第一个视口,而不是滚动后到达的视口。 我想知道TakeScreenshot方法是给出OperaWebDriver中第一个视口的屏幕截图还是当前视口的屏幕截图。在chrome中,它拍摄了当前网络驱动程序的屏

  • 问题内容: 我需要使用chrome驱动程序对整个页面进行截图,但是部分实现了。 屏幕截图看起来像是带有正确信息的可见矩形,下面是黑色的大区域。 问题答案: 这是一个已知的错误:https : //code.google.com/p/chromedriver/issues/detail?id=294(仅适用于Chrome驱动程序,firefox驱动程序可以正常工作)

  • 我只需要当前视口的屏幕截图,特别是滚动位置。基本上是当前Chrome驱动程序所做的。 据我所知,这似乎是完全可能的,但出于某种原因,屏幕截图命令总是努力拍摄完整的文档屏幕截图。事实上,IE驱动程序拍摄多个视口快照,然后将它们缝合在一起。 我使用的是Ruby webdriver,但我看不到任何东西,只能截取视口的屏幕。可能吗?

  • 问题内容: 我需要使用chrome驱动程序对整个页面进行截图,但是 部分实现了。 屏幕截图看起来像是带有正确信息的可见矩形,下面是黑色的大区域。 问题答案: 这是一个已知的错误: https://code.google.com/p/chromedriver/issues/detail?id=294 (仅适用于Chrome 驱动程序,firefox驱动程序可以正常工作)

  • 问题内容: 嗨,我正在制作一个游戏,并且在游戏中添加了一个共享按钮。我希望用户能够在一条消息中彼此共享一条消息,URL和屏幕快照。它的共享方面工作正常,并且一切正常,但屏幕快照本身显示为空白。这是我用来截屏的代码: 请帮助我解决此问题,请确保使用Swift语言来解决。如果这有所作为,我也使用SpriteKit技术。我是编码新手,所以请非常清楚。非常感谢你! 问题答案: 更新: Xcode 8.2.

  • 我想让应用程序像“简易屏幕录制器”。我必须从哪里开始,因为我搜索了很多,但没有找到任何开始的链接。有任何用于创建屏幕录制器的api,而不是屏幕截图。我不想使用javacv从屏幕截图创建视频。我只想让用户启动应用程序,点击开始录制按钮,然后用户在手机上所做的一切来录制这些内容。 1) Android系统中是否有相关的api。 2) 如何在android中创建屏幕录制器应用程序。 3)是没有任何api