使用Selenium截取屏幕截图:WaitForPageToLoad不会等待足够长的时间

时间:2010-07-12 15:55:04

标签: selenium selenium-rc

我正在尝试从包含多个浏览器的网页获取屏幕截图。刚试验Selenium RC,我写了这样的代码:

var sel = new DefaultSelenium(server, 4444, target, url);
sel.Start();
sel.Open(url);
sel.WaitForPageToLoad("30000");
var imageString = sel.CaptureScreenshotToString();

这基本上有效,但在大多数情况下,屏幕截图是一个空白的浏览器窗口,因为该页面尚未准备好显示。如果我在WaitForPageToLoad之后添加一个睡眠,它会起作用,但这会减慢快速浏览器的速度,并且/或者可能会缩短较慢的浏览器(或加载时)。

对此的典型解决方案似乎是等待某个元素的存在。但是,这是一个简单的通用解决方案,用于获取尽可能多的浏览器(测试布局)的本地网页的屏幕截图,我不想输入某些元素名称或其他任何内容。这是一个简单的工具,您只需输入Selenium Server URL和您要测试的URL,然后重新获取屏幕截图。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我使用Selenium-RC捕获等待时间不同的远程页面的屏幕截图。在这种情况下,检查页面的标题并使用time.sleep(n秒)通常会为我做。

答案 1 :(得分:0)

您可以使用浏览器状态栏来验证该页面是否已完全加载。我认为这是最好的解决方案。