2013-04-24 23 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結合起來,獲得絕佳的靈活性和功能。

相關問題