我在本地计算机上捕获屏幕截图时遇到问题。我使用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
答案 0 :(得分:0)
FF的DOM加载比IE快得多。对于IE,请等待文档使用JS进入就绪状态。
do
{
// sleep for few milliseconds.
} while ((string)ie.ExecuteScript("return document.readyState") != "complete");
(使用C#编码 - 伪代码,未编译)
答案 1 :(得分:0)
您还没有说过您正在使用哪个版本的IEDriverServer.exe,但是我将使用我的通灵调试功能来猜测您是否正在使用32位版本在64位版本的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驱动程序本身的大规模重新架构,因此没有时间表进行修复。
作为旁注,很有可能说#34;将64位IEDriverServer.exe用于64位操作系统,"但那有自己的问题。 sendKeys
发生同样的问题(32位可执行文件不能执行64位代码,反之亦然),反之亦然。使用sendKeys
也需要一个窗口挂钩,但挂钩到客户端呈现过程,即使对于64位IE,它通常也是一个32位进程。因此,对于64位IE驱动程序,它的挂钩不会安装到32位进程中,sendKeys
需要花费大量时间才能工作,大约5秒对于每一次击键。
答案 2 :(得分:-1)
我在IE中长时间使用同样的问题(ff和chrome都很好) 几天前我刚开始从我的集线器到我的节点机器的远程桌面连接......魔术,现在一切看起来都很好:-)
你怎么看?