Итак, вот подход, который я начал использовать с использованием библиотек 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;
}
}
}
Это позволяет мне абстрагировать действия на странице от самого тестового кода.