Selenium RC如何在测试执行时制作html代码的截图?

时间:2013-04-24 09:06:11

标签: html selenium-rc

我使用selenium RC。 waiForPageToLoad()方法后我的测试失败了。它在页面上找不到元素。我在浏览器上看到哪些页面仍在加载,waiForPageToLoad()“表示”该页面已加载。如何在waiForPageToLoad()方法完成执行后查看我的HTML代码的外观?

还有一件事。在waiForPageToLoad()之间可以找到的元素之一

<h1><script language="Javascript" </script>
<a id="some" class="some" onclick="">Text</a>
Text
</h1>

可能是该页面已加载但javascript尚未执行。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

1)waiForPageToLoad()不能证明您拥有页面上的所有元素。最好使用waitForElementPresent,或检查isElementPresent以查明该元素是否在页面上。

2)你没有提到你在RC中使用的语言。

如果是java - 您可以使用

import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
...
public void captureScreen(String fileName) throws Exception {
   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   Rectangle screenRectangle = new Rectangle(screenSize);
   Robot robot = new Robot();
   BufferedImage image = robot.createScreenCapture(screenRectangle);
   ImageIO.write(image, "png", new File(fileName));
}

如果C#:

using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using Selenium;
using System.Drawing;
using System.Drawing.Imaging;
namespace SeleniumTests
{
[TestFixture]
public class ImageCapture
{
private ISelenium selenium;
private StringBuilder verificationErrors;
public static string CaptureScreenshot()
{
Bitmap bmpScreenshot = new Bitmap(1024, 768, PixelFormat.Format32bppArgb);
Graphics Screenshot = Graphics.FromImage(bmpScreenshot);
Screenshot.CopyFromScreen(0, 0, 0, 0, new Size(1024, 768));
string name = (System.Convert.ToString(System.DateTime.Now).Replace("/", "_")).Replace(":", "_") + ".jpg";
bmpScreenshot.Save(name, ImageFormat.Jpeg);
return name;
}

3)如果你在java中开发 - 考虑使用Sikuli。它是一个可以在屏幕上使用图像的工具(您可以将其用作Java库)。您可以将Selenium和Sikuli结合使用,以获得出色的灵活性和功能。