如何使用VS 2012在Coded UI Test中滚动网页?

时间:2015-02-02 10:32:20

标签: c# visual-studio-2012 coded-ui-tests

我正在使用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事件产生错误,因为控件是隐藏的(因为它在下面在网站上,超出可见范围)。 经过几次测试,这让我很疯狂。

知道出了什么问题,如何向下滚动网站,以便我的输入控件在可见范围内?

1 个答案:

答案 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");
        }

    }

您还可以添加与超时相关的条件,以确保它不会进入无限循环。

如果您在最后遇到此问题,请与我联系。