Поддерживает ли инфраструктура WebAii структуру классов страниц так же, как это делает WatiN? - PullRequest
0 голосов
/ 08 августа 2011

Я оцениваю несколько различных фреймворков для автоматизации тестирования.Одна из вещей, которые мне действительно нравятся в WatiN - это модель страницы для абстрагирования кода страницы от ваших тестов.

Пример Watin для страницы входа:

public class AVLoginPage : Page
{
    public TextField Email
    {
        get { return Document.TextField(Find.ById("UserLogin_UserName")); }
    }

    public TextField Password
    {
        get { return Document.TextField(Find.ById("UserLogin_Password")); }
    }

    public Button LoginBtn
    {
        get { return Document.Button(Find.ById("UserLogin_LoginButton")); }
    }

    /// <summary>
    /// Enters the email and loging in to the corresponding boxes and clicks the login button.
    /// </summary>
    /// <param name="email"></param>
    /// <param name="password"></param>
    public void Login(string email, string password)
    {
        Email.TypeText(email);
        Password.TypeText(password);
        LoginBtn.Click();
    }
}

Могу ли я сделать что-то подобное с WebAii?

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Итак, вот подход, который я начал использовать с использованием библиотек WebAii:

Мой тестовый код выглядит так:

[TestMethod]
public void Login_inValid_Combination_WebAii()
{
    Manager.LaunchNewBrowser(BrowserType.Safari);
    ActiveBrowser.NavigateTo(baseUrl + "login.aspx");

    LoginPage.Login("test@roger.com", "123421343414",ActiveBrowser);
    string expectedMsg = "Email address or password is incorrect.";
    string actualMsg  = LoginPage.GetError(ActiveBrowser);

    Assert.IsTrue(actualMsg.Contains(expectedMsg));


}

У меня есть библиотека:

using ArtOfTest.WebAii.Controls.HtmlControls;
using ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts;
using ArtOfTest.WebAii.Core;
using ArtOfTest.WebAii.ObjectModel;
using ArtOfTest.WebAii.TestAttributes;
using ArtOfTest.WebAii.TestTemplates;
using ArtOfTest.WebAii.Win32.Dialogs;

using ArtOfTest.WebAii.Silverlight;
using ArtOfTest.WebAii.Silverlight.UI;

namespace WebAIIPageLibrary
{
    public class LoginPage : BaseTest
    {

        public static void Login(string email, string password, Browser passedBrowser )
        {

            passedBrowser.Find.ById<HtmlInputText>("UserLogin_UserName").Text = email;
            passedBrowser.Find.ById<HtmlInputPassword>("UserLogin_Password").Text = password;
            passedBrowser.Find.ById<HtmlInputSubmit>("UserLogin_LoginButton").Click();
        }

        public static string GetError(Browser passedBrowser)
        {
            ReadOnlyCollection<HtmlDiv> div = passedBrowser.Find.AllByTagName<HtmlDiv>("div");
            string errorMsg = "";
            foreach(HtmlDiv s in div)
            {
                if (s.CssClass == "error")
                {
                    errorMsg = s.InnerText;
                    break;
                }
            }

            return errorMsg;         
        }

        public static string GetDashboardTitle(Browser passedBrowser)
        {
            return passedBrowser.Window.Caption;
        }
    }
}

Это позволяет мне абстрагировать действия на странице от самого тестового кода.

0 голосов
/ 09 августа 2011

Telerik Testing Framework (ранее назывался WebAii) не включает никаких возможностей записи.Чтобы получить полную запись и автоматическую абстракцию класса Page так, как я думаю, вы этого хотите, вам нужно приобрести лицензию для Test Studio (или Test Studio Express , которая поставляется с Ultimate Collection).

Если вы хотите вручную написать собственные абстракции, вы можете сделать это, следуя документации Find Expression .Также (в настоящее время не задокументировано, но мы работаем над этим) есть атрибут [Find ()], который вы можете использовать вместе с Find Expressions.Этот атрибут заменяет старый атрибут FindParam .Атрибут FindParam работает только с элементами HTML, а новый атрибут Find работает как с элементами HTML, так и с элементами XAML.

...