代码之家  ›  专栏  ›  技术社区  ›  OregonGhost

用Selenium截图:WaitForPageToLoad等待时间不够长

  •  -1
  • OregonGhost  · 技术社区  · 15 年前

    我试图从一个有多个浏览器的网页上获取截图。我只是在尝试Selenium RC,我编写了如下代码:

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

    这基本上是可行的,但是在大多数情况下,屏幕截图是一个空白的浏览器窗口,因为页面还没有准备好显示。如果我在WaitForPageToLoad之后添加一个sleep,这有点管用,但这会减慢快速浏览器的速度和/或可能是对较慢浏览器(或负载不足)的缩写。

    一个典型的解决方案似乎是等待某个元素的出现。不过,这是一个简单的通用解决方案,可以获得尽可能多浏览器的本地网页的屏幕截图(以测试布局),我不想输入某些元素名或其他内容。这是一个简单的工具,您只需输入Selenium服务器的URL和要测试的URL,然后获取屏幕截图。

    有什么建议吗?

    2 回复  |  直到 15 年前
        1
  •  0
  •   fixxxer    14 年前

    我使用Selenium RC捕捉远程页面的截图,其中等待时间是可变的。在这种情况下,检查页面标题并使用time.sleep(n秒)通常对我有用。

        2
  •  0
  •   Paresh    14 年前

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