【问题标题】:Screen capturing seems to be issue with IE 10?屏幕捕获似乎是 IE 10 的问题?
【发布时间】:2014-11-21 20:02:05
【问题描述】:

我在本地机器上截屏时遇到问题。我使用 FF 和 IE10,对于 FF,一切正常,屏幕截图以全尺寸窗口捕获。 对于 IE10,我将页面下部的一半变为黑色,这似乎与滚动有关,只要页面中有滚动,就会看到黑条,否则不会。我怀疑是时间问题,IE 捕获整个页面可能需要更长的时间。

我有以下代码用于捕获:

public static void takeScreenshot(String filename) 
{
     WebDriver augmentedDriver = new Augmenter().augment(AbstractTest.driver);
     File screenshotFile=((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE);
     try 
     {
        FileUtils.copyFile(screenshotFile, new File(getScreenshotsDir() + filename));
     } 
     catch (IOException e) 
     {
        System.out.println("Cannot capture sreenshot." + e.getMessage());
     }
}

似乎我遇到了与此处所述完全相同的问题: http://selenium.10932.n7.nabble.com/TakeScreenshot-from-Augmenter-RemoteWebdriver-gets-window-only-for-IE-10-others-get-entire-page-td18063.html

【问题讨论】:

    标签: java selenium webdriver internet-explorer-10


    【解决方案1】:

    FF 的 DOM 加载速度比 IE 快得多。对于 IE,请等待文档进入使用 JS 的就绪状态。

    do
    {
       // sleep for few milliseconds.
    } while ((string)ie.ExecuteScript("return document.readyState") != "complete");
    

    (使用 C# 编码 - 伪代码,未编译)

    【讨论】:

    • 谢谢。请将其标记为已接受的答案。因为当他们面临类似问题时它可能会帮助其他人。
    • 你好。抱歉,我现在又试了几次,黑条似乎还在。
    • 看来问题与滚动有关。每当页面滚动时,就会看到黑条
    【解决方案2】:

    您还没有说您使用的是哪个版本的 IEDriverServer.exe,但我将使用我的通灵调试能力猜测您使用的是在 64- 上运行的 32 位版本的可执行文件位版本的 Windows。如果您使用的是 32 位版本的 IEDriverServer.exe,您遇到的是 IE 10 或更高版本的已知问题。该问题在issue #5876 in the Selenium project issue tracker 中有完整记录。该问题报告中评论的操作信息:

    当您在 64 位版本的 Windows 上运行 IE 10 或更高版本时, 默认情况下,托管包含窗口的进程,其中包括 浏览器 chrome(地址栏、导航按钮、菜单等)是 64 位进程。承载内容所在窗口的进程 实际呈现(在每个选项卡内)是一个 32 位进程。

    默认情况下,IE 驱动程序必须在顶层使用 windows 挂钩 窗口以允许浏览器调整大小以显示 整个页面画布。这就是问题所在。窗户挂钩是 未安装,因为是 64 位进程(顶级窗口进程) 无法执行 32 位代码(32 位中的 windows 钩子代码) IEDriverServer.exe)。正确解决此问题的唯一方法是 创建第二个(64 位)可执行文件来执行窗口大小调整。

    很遗憾,任何解决此问题的尝试都需要对 IE 驱动程序本身进行大规模重新架构,因此没有修复时间表。

    附带说明一下,说“将 64 位 IEDriverServer.exe 用于 64 位操作系统”很诱人,但这也有其自身的问题。 sendKeys 也会出现同样的问题(32 位可执行文件不能执行 64 位代码,反之亦然),但相反。使用sendKeys 也需要一个windows hook,但是hook 到客户端渲染进程,即使是64 位IE 也通常是32 位进程。因此,对于 64 位 IE 驱动程序,它的钩子不会安装到 32 位进程中,sendKeys 的工作时间非常长,每次击键大约需要 5 秒。

    【讨论】:

    • 感谢您的回复。是的,我正在运行 32 位。 64位太慢了。我的解决方案是我连接了一个分辨率非常高的显示器,垂直放置。整个页面没有滚动显示,屏幕截图没有任何黑条。
    【解决方案3】:

    我在 IE 上很长一段时间都遇到同样的问题(ff 和 chrome 都很好) 几天前,我刚刚开始从我的集线器机器到我的节点机器的远程桌面连接......魔术,现在一切看起来都很好:-)

    你怎么看?

    【讨论】:

      猜你喜欢
      • 2015-06-21
      • 1970-01-01
      • 2013-05-15
      • 2013-11-13
      • 2014-09-28
      • 2012-04-19
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多