我正在尝试使用Telerik 测试框架来自动化一些网站测试。
为此,我需要能够分析一个由 a 管理的 ajaxified 工具提示,RadToolTIpManager
它显示一个包含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
对页面上的实例的引用(我正在使用Get<HtmlImage>
基于图像控件的通配符搜索的方法遍历 DOM id
,它每次都以非 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()
andActiveBrowser.WaitForAjax(_sleepTimeout)
方法,并尝试增加超时,但尽管如此,由于对图像元素的 NULL 引用,测试偶尔会失败。
什么可能导致此自动化无法找到我需要的图像MouseHover()
?
更新:根据我的一位更熟悉 Telerik 测试框架的同事所说,该MouseHover()
方法更多的是一种将鼠标悬停在给定元素上的硬件级方法。测试经常失败,因为我在我的开发机器上本地运行测试,当然当测试试图运行时鼠标到处都是。