2014-03-12 17 views
1

我試圖使用Telerik測試框架自動化一些網站測試。爲什麼在嘗試將MouseHover放在圖像上時間斷斷續續地找到「Object reference not found」?

爲此,我需要能夠分析由RadToolTIpManager管理的ajaxified工具提示,該工具提示顯示包含RadGrid的用戶控件。該網站本身呈現並按預期作出響應,但偶爾在測試MouseHover()時,我試圖調用以調出工具提示,產生圖像的Object reference not found

下面是圖片我想懸停在示例標記:

<img id="ctl00_ContentBody_CustomerSummary__TheImage" 
src="../images/Fire.png"> 

下面是使用的考驗,以啓動自動化的步驟:

private const int _sleepTimeout = 3000; 
private MainPageObjectClass _HomePage; 

OpenMainPage(); 

ActiveBrowser.WaitUntilReady(); 
ActiveBrowser.WaitForAjax(_sleepTimeout); 

var theImage = _HomePage.MyToolTipImage; 

的異常將發生在這種方法中,它存在於定義了頁面對象的類中,而屬性用於獲取對這些對象實例的引用:

public void HoverOverTheImage() 
{ 
    // Exception occurs below... 
    MyToolTipImage.MouseHover(); 
} 

以下是我如何嘗試檢索頁面上的實例TheImage的引用(我使用基於圖像控件的id的通配符搜索使用Get<HtmlImage>方法遍歷DOM,該方法再次以非-NULL每次):

/// <summary> 
/// Image which upon MouseHover() should show the tooltip control. 
/// </summary> 
public HtmlImage MyToolTipImage 
{ 
    get 
    { 
     return Get<HtmlImage>("id=~__TheImage", "tagname=img"); 
    } 
} 

我已經嘗試添加測試步驟之間的ActiveBrowser.WaitUntilReady()ActiveBrowser.WaitForAjax(_sleepTimeout)方法,並試圖增加超時,但儘管這樣的測試會偶爾失敗,由於NULL參考圖像元素。

什麼可能導致此自動化無法找到我需要的圖像MouseHover()

更新:根據我的一位更熟悉Telerik測試框架的同事,MouseHover()方法更多地是在給定元素上懸停的硬件級別方法。這些測試經常失敗,因爲我在開發機器上本地運行測試,當測試嘗試運行時,鼠標當然會遍佈整個地方。

回答

2

您是否試過另一種方式檢索頁面上的圖像引用?您可以使用Telerik測試框架的Find.Byxxx方法:http://docs.telerik.com/teststudio/user-guide/write-tests-in-code/intermediate-topics/element-identification/finding-page-elements.aspx。如果圖像確實在頁面上成功找到 - 爲了懸停元素,您可以使用InvokeEvent方法。下面的代碼顯示了一個例子:

HtmlImage image = Find.ById<HtmlImage>("~TheImage"); 
Assert.IsNotNull(image); 
image.InvokeEvent(ScriptEventType.OnMouseOver); 

通常MouseHover方法應該讓它工作,但它有可能是元素執行步驟時,無法在瀏覽器窗口中可見。

+0

該圖片在頁面上始終存在,它只是'MouseHover',看起來不可靠。感謝您的文章,我會給'InvokeEvent'一個鏡頭。 –

+1

結果'InvokeEvent'正常工作提示工具提示!謝謝。 –

相關問題