繁体   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