1)waiForPageToLoad()不證明您擁有頁面上的所有元素。最好使用waitForElementPresent,或者檢查isElementPresent以確定元素是否在頁面上。 2)你沒有提到你在RC中使用的語言。
如果Java的 - 你可能如果C#中使用
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));
}
:
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結合起來,獲得絕佳的靈活性和功能。
您是否嘗試過增加'waitForPagetoload()'方法中指定的超時時間?也可以使用selneium RC中的'isElementPresent()'和'isVisible()'方法。 – Hemanth 2013-04-24 09:13:39
我試圖增加超時,但它沒有幫助。除了據我瞭解,如果問題在超時,我會得到超時異常。它看起來像methos說他們的頁面已加載,但事實並非如此。 – genky 2013-04-24 09:36:24
什麼是'isElementPresent()'和'isVisible()'方法返回?對或錯 ? – Hemanth 2013-04-24 09:46:38