C# 为什么我会得到';未找到对象引用';在尝试将鼠标悬停在图像上时是否会间歇?

C# 为什么我会得到';未找到对象引用';在尝试将鼠标悬停在图像上时是否会间歇?,c#,asp.net,telerik,mousehover,telerik-test-studio,C#,Asp.net,Telerik,Mousehover,Telerik Test Studio,我正在尝试使用Telerik测试框架来自动化一些网站测试 为此,我需要能够分析由RadToolTIpManager管理的ajaxified工具提示,该工具提示显示包含RadGrid的用户控件。站点本身按预期呈现和响应,但偶尔在测试鼠标悬停()时(我尝试调用鼠标悬停()来显示工具提示),会为图像生成一个未找到的对象引用 下面是我试图悬停在上面的图像的标记示例: <img id="ctl00_ContentBody_CustomerSummary__TheImage" src="../ima

我正在尝试使用Telerik测试框架来自动化一些网站测试

为此,我需要能够分析由
RadToolTIpManager
管理的ajaxified工具提示,该工具提示显示包含
RadGrid
的用户控件。站点本身按预期呈现和响应,但偶尔在测试
鼠标悬停()
时(我尝试调用鼠标悬停()来显示工具提示),会为图像生成一个
未找到的对象引用

下面是我试图悬停在上面的图像的标记示例:

<img id="ctl00_ContentBody_CustomerSummary__TheImage" 
src="../images/Fire.png">
此方法将出现异常,它位于定义页面对象并使用属性获取对这些对象实例的引用的类中:

public void HoverOverTheImage()
{
    // Exception occurs below...
    MyToolTipImage.MouseHover();
}
下面是我如何尝试检索对页面上的
TheImage
实例的引用(我使用
Get
方法遍历DOM,并基于图像控件的
id
进行通配符搜索,每次都返回为非空):

//
///在MouseHover()上显示工具提示控件的图像。
/// 
公共HtmlImage MyToolTipImage
{
得到
{
返回Get(“id=~\u TheImage”,“tagname=img”);
}
}
我尝试在测试步骤之间添加
ActiveBrowser.WaitUntilReady()
ActiveBrowser.WaitForAjax(\u sleepTimeout)
方法,并尝试增加超时,但尽管如此,由于对image元素的引用为空,测试偶尔会失败

是什么原因导致此自动化无法找到我需要的图像以
MouseHover()


更新:据我的一位更熟悉Telerik测试框架的同事说,
MouseHover()
方法更像是一种在给定元素上悬停的硬件级方法。测试经常失败,因为我在开发机器上本地运行测试,当然,当测试试图运行时,鼠标到处都是

您是否尝试了另一种方法来检索对页面上图像的引用?您可以使用Telerik测试框架的Find.Byxxx方法:。如果确实在页面上成功找到了图像-对于悬停元素,可以使用InvokeEvent方法。以下代码显示了一个示例:

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

通常,MouseHover方法应该可以使其工作,但在执行步骤时,该元素可能在浏览器窗口中不可见。

图像始终在页面上找到,只是
MouseHover
似乎不可靠。谢谢你的帖子,我将给
InvokeEvent
一个镜头。结果是
InvokeEvent
可以很好地显示工具提示!谢谢
/// <summary>
/// Image which upon MouseHover() should show the tooltip control.
/// </summary>
public HtmlImage MyToolTipImage
{
    get
    {
        return Get<HtmlImage>("id=~__TheImage", "tagname=img");
    }
}
HtmlImage image = Find.ById<HtmlImage>("~TheImage");
Assert.IsNotNull(image);
image.InvokeEvent(ScriptEventType.OnMouseOver);