我正在使用VS 2012录制编码的UI测试,它将测试Web应用程序的功能。
我加载网页后,点击一个按钮开始p.e.工作申请。
在下一页加载到同一网站后,我的问题就开始了。 入口控件位于网站的末尾。 要查看并输入数据到输入控件中,我必须向下滚动。 录音在UIMap中产生了以下方法。
Designer.cs:
public void Scrollen()
{
#region Variable Declarations
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.AllThreads;
this.UIGoogleMozillaFirefoxWindow.UIItemPropertyPage.UIBewerbungDemoFirmaDocument.WaitForControlExist();
this.UIGoogleMozillaFirefoxWindow.UIItemPropertyPage.UIBewerbungDemoFirmaDocument.WaitForControlReady();
Playback.PlaybackSettings.WaitForReadyLevel = WaitForReadyLevel.UIThreadOnly;
WinControl uIBewerbungDemoFirmaDocument = this.UIGoogleMozillaFirefoxWindow.UIItemPropertyPage.UIBewerbungDemoFirmaDocument;
#endregion
// Click "Job application" document
Point pt = new Point(1390, 553);
int count = 0;
while (!uIBewerbungDemoFirmaDocument.TryGetClickablePoint(out pt) && count < 20)
{
count++;
System.Threading.Thread.Sleep(10);
if (count == 20)
Console.WriteLine("ClickablePoint not found");
}
Mouse.Click(uIBewerbungDemoFirmaDocument, new Point(1390, 553));
Mouse.MoveScrollWheel(10);
}
正如您所看到的,我尝试了WaitForControlExist,WaitForControlReady,TryGetClickablePoint和MoveScrollWheel方法。 但是Mouse.Click和Mouse.MoveScrollWheel都没有工作。
在下一个方法中,我点击第一个输入字段,我在执行时收到一条消息,即click事件产生错误,因为控件是隐藏的(因为它在下面在网站上,超出可见范围)。 经过几次测试,这让我很疯狂。
知道出了什么问题,如何向下滚动网站,以便我的输入控件在可见范围内?
答案 0 :(得分:0)
您可以尝试Control.EnsureClickable()。或者您可以使用下面提到的功能滚动页面,直到控件无法点击。
public static void ScrollAndClick(HtmlControl Control)
{
bool isClickable = false;
if (Control.TryFind())
{
while (!isClickable)
{
try
{
Control.EnsureClickable();
Mouse.Click(Control);
isClickable = true;
}
catch (FailedToPerformActionOnHiddenControlException)
{
Mouse.MoveScrollWheel(-1);
throw;
}
}
}
else
{
throw new AssertInconclusiveException("Control Not Found");
}
}
您还可以添加与超时相关的条件,以确保它不会进入无限循环。
如果您在最后遇到此问题,请与我联系。