【问题标题】:Getting black images with selenium.captureScreenshot使用 selenium.captureScreenshot 获取黑色图像
【发布时间】:2011-01-21 06:44:43
【问题描述】:

我正在使用 testng 执行 selenium 测试,这些测试是通过 hudson(使用 ssh 连接)在具有 Selenium RC 的远程系统上启动的。远程系统是安装了 MKS Toolkit 的 windows xp,因此是 ssh。测试不作为 Windows 服务执行。

我尝试过使用 captureScreenshot 和 captureEntirePageScreenshot 方法。第一个总是产生黑色图像。第二个创建了正确的屏幕截图,但它仅适用于 Firefox,我们的测试通常在 Firefox 上通过而在其他浏览器中失败,因此为其他浏览器(主要是 IE 和 Safari)捕获屏幕截图至关重要。测试并行运行,同时打开许多浏览器窗口。我不确定这是否是导致问题的原因。任何想法将不胜感激。

【问题讨论】:

    标签: selenium hudson testng


    【解决方案1】:

    不幸的是,Selenium 中的屏幕截图从一开始就在非 Firefox 浏览器中出现问题。这是我们 Selenium 开发人员一直在努力纠正的问题。

    最新的工作是更新 Snapsie 以在 IE 中工作。 http://blog.codecentric.de/en/2010/02/remote-screenshots-mit-selenium-und-dem-robot-framework/ 有一篇博文解释了发生的事情。

    我注意到如果屏幕未激活,即屏幕保护程序已启动,它可以生成黑色屏幕截图。

    编辑:

    我只是有一个想法。您可以随时运行Castro 来录制您的测试,然后观看回放。这是 SauceLabs 用来在云中运行 Selenium 的东西。

    【讨论】:

    • 感谢您的指点。看起来没有解决方案可以在自动执行中使用非 Firefox 浏览器截屏(当用户未主动登录时)。这不好。我去看看卡斯特罗...
    • 嗯... Castro 是一个 python 库。我们不使用python。我们的测试是用 java (testng) 编写的。
    • 您可以使用 jython(Java 的 Python 实现)调用它。我只用过 IronPython(我是 .NET 并让它工作)
    【解决方案2】:

    为此编写一个方法,并在需要截屏的任何地方调用它。使用 selenium 中已经使用的 java.awt 包。例如check this site

    【讨论】:

      【解决方案3】:

      设置 Windows 自动登录,启动进程不是 Windows 服务后,我找到了如何解决 IEDriverServer.exe 的 Remote Desktop with Black Screenshots 问题,方法是创建一个断开 RDP 的批处理文件,而不是使用常规 X 按钮关闭 RDP 会话:

      %windir%\system32\tscon.exe %SESSIONNAME% /dest:console
      

      在此处查看更多详细信息: https://stackoverflow.com/a/24529629/658497

      (虽然,我希望有一种方法可以在使用 X Windows 按钮终止 RDP 会话时将其作为默认操作运行)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-01
        相关资源
        最近更新 更多