簡體   English   中英

嘗試在圖像上進行鼠標懸停時,為什么會間歇性出現“找不到對象引用”的情況?

[英]Why do I get 'Object reference not found' intermittently when attempting MouseHover over an image?

我正在嘗試使用Telerik測試框架來自動化一些網站測試。

為此,我需要能夠分析由管理的Ajax化工具提示RadToolTIpManager ,其顯示含有用戶控制RadGrid 該站點本身可以​​按預期方式進行渲染和響應,但是偶爾在測試MouseHover() (我嘗試調用它來調出工具提示)會產生Object reference not found該圖像的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實例的引用的方式(我使用Get<HtmlImage>方法遍歷DOM,並基於圖像控件的id進行通配符搜索,但再次返回為non每次-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()MouseHover()方法更像是一種硬件級的懸停在給定元素上的方法。 由於我在開發機器上本地運行測試,所以測試經常失敗,當然,在嘗試運行測試時,鼠標到處都是。

您是否嘗試過另一種方法來檢索對頁面上圖像的引用? 您可以使用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方法應使其起作用,但是執行該步驟時,該元素在瀏覽器窗口中可能不可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM