2013-04-24 55 views
0

我使用硒RC。在waiForPageToLoad()方法后,我的测试失败。它没有在页面上找到元素。我在浏览器上看到哪些页面仍在加载,而waiForPageToLoad()“表示”该页面已加载。如何在waiForPageToLoad()方法完成其执行后检查HTML代码的外观?Selenium RC如何在测试执行时制作html代码的截图?

还有一件事。在这前人的精力waiForPageToLoad()后瑶池场合的元素之一是

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

之间,可能是网页加载但尚未执行的JavaScript。如何解决这个问题?

+0

您是否尝试过增加'waitForPagetoload()'方法中指定的超时时间?也可以使用selneium RC中的'isElementPresent()'和'isVisible()'方法。 – Hemanth 2013-04-24 09:13:39

+0

我试图增加超时,但它没有帮助。除了据我了解,如果问题在超时,我会得到超时异常。它看起来像methos说他们的页面已加载,但事实并非如此。 – genky 2013-04-24 09:36:24

+0

什么是'isElementPresent()'和'isVisible()'方法返回?对或错 ? – Hemanth 2013-04-24 09:46:38

回答

0

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结合起来,获得绝佳的灵活性和功能。

相关问题