Automated tests WebAii框架是否像WatiN那样支持页面类结构?
我正在评估几个不同的测试自动化框架。关于WatiN,我非常喜欢的一件事是从测试中抽象页面代码的页面模型 在登录页面的示例中:Automated tests WebAii框架是否像WatiN那样支持页面类结构?,automated-tests,watin,webaii,Automated Tests,Watin,Webaii,我正在评估几个不同的测试自动化框架。关于WatiN,我非常喜欢的一件事是从测试中抽象页面代码的页面模型 在登录页面的示例中: public class AVLoginPage : Page { public TextField Email { get { return Document.TextField(Find.ById("UserLogin_UserName")); } } public TextField Password {
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();
}
}
public class AVLoginPage:Page
{
公共文本域电子邮件
{
获取{return Document.TextField(Find.ById(“UserLogin_UserName”);}
}
公共文本字段密码
{
获取{return Document.TextField(Find.ById(“UserLogin_Password”);}
}
公共按钮登录
{
获取{return Document.Button(Find.ById(“UserLogin_LoginButton”);}
}
///
///输入电子邮件并登录到相应的框中,然后单击登录按钮。
///
///
///
公共无效登录(字符串电子邮件、字符串密码)
{
电子邮件。键入文本(电子邮件);
密码。键入文本(密码);
LoginBtn.Click();
}
}
我可以用WebAii做类似的事情吗?Telerik测试框架(以前称为WebAii)不包括任何录制功能。要以我认为您想要的方式获得完整录制和自动页面类抽象,您需要购买许可证(或Ultimate Collection附带的许可证)
如果您想手工编写自己的抽象,欢迎您按照以下步骤进行编写。另外(目前还没有文档,但我们正在研究)还有[Find()]属性,可以与Find表达式一起使用。此属性将替换。FindParam属性仅适用于HTML元素,而新的Find属性适用于HTML和XAML元素。因此,以下是我使用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;
}
}
}
使用ArtOfTest.WebAii.Controls.HtmlControls;
使用ArtOfTest.WebAii.Controls.HtmlControls.HtmlAsserts;
使用ArtOfTest.WebAii.Core;
使用ArtOfTest.WebAii.ObjectModel;
使用ArtOfTest.WebAii.testAttribute;
使用ArtOfTest.WebAii.TestTemplates;
使用ArtOfTest.WebAii.Win32.Dialogs;
使用ArtOfTest.WebAii.Silverlight;
使用ArtOfTest.WebAii.Silverlight.UI;
命名空间WebAIIPageLibrary
{
公共类登录页面:BaseTest
{
公共静态无效登录(字符串电子邮件、字符串密码、浏览器通过浏览器)
{
passedBrowser.Find.ById(“UserLogin\u UserName”).Text=电子邮件;
passedBrowser.Find.ById(“UserLogin\u Password”).Text=密码;
passedBrowser.Find.ById(“UserLogin\u login按钮”)。单击();
}
公共静态字符串GetError(浏览器通过浏览器)
{
ReadOnlyCollection div=passedBrowser.Find.AllByTagName(“div”);
字符串errorMsg=“”;
foreach(HtmlDiv在分区中)
{
如果(s.CssClass==“错误”)
{
errorMsg=s.InnerText;
打破
}
}
返回errorMsg;
}
公共静态字符串GetDashboardTitle(浏览器通过浏览器)
{
返回passedBrowser.Window.Caption;
}
}
}
这使我能够从测试代码本身中提取页面上的操作。我实际上并不是在询问录制功能。谢谢不过我还是想了些办法。