[英]Why do I get “Object reference not set to an instance of an object.” when changing pages in asp.net
[英]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.