我正在评估几个不同的测试自动化框架。我非常喜欢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做这样的事情吗?
答案 0 :(得分:1)
所以这是我开始使用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;
}
}
}
这允许我从测试代码本身抽象出页面上的动作。
答案 1 :(得分:0)
Telerik Testing Framework(以前称为WebAii)不包含任何录制功能。要以我认为您需要的方式获得完整录制和自动页面类抽象,您需要购买Test Studio(或Test Studio Express附带Ultimate Collection的许可证。)
如果您想亲自编写自己的抽象代码,欢迎您按照Find Expression documentation进行操作。另外(目前没有记录,但我们正在研究它)是您可以与Find Expressions一起使用的[Find()]属性。此属性替换old FindParam attribute。 FindParam属性仅适用于HTML元素,而新的Find属性适用于HTML和XAML元素。