我总是喜欢把任务分配的相关信息组。例如,如果我有一个用户类,我可能会将它分解为几个较小的类:LoginCredentials,ProfileInfo,Settings等,但我仍然通常拥有包含这些子类的顶级用户类。
我肯定会推荐的一件事是将对象传递给一个FillForm函数,而不是所有这些单独的函数。使用这种方法有很多优点。一个,你可以有一些用于许多测试用例的“通用”预配置对象。例如:
public class FormInfo
{
string Domain;
string Name;
string Category;
// etc...
public FormInfo(string domain, string name, string category)
{
Domain = domain;
Name = name;
Category = category;
// etc...
}
}
// Somewhere in your initialization code
public static FormInfo Info1 = new FormInfo("myDomain1", "myName1", "myCategory1");
public static FormInfo Info2 = new FormInfo("myDomain2", "myName2", "myCategory2");
You can still update one of your common merchants if you need to do something one-off:
// In your test case:
Info1.Category = "blah";
FormPage.FillForm(Info1);
或者,您可以根据需要为特定测试用例创建一个全新的商户对象。你也可以做这样的事情字段验证或者使用这些对象,或者我通常做的是打破特定字段验证的页面对象模式,所以如果我验证商家域场我可以这样做:
Info1.Domain = null; //This should make the FillForm function skip doing anything with this field.
FormPage.FillForm(Info1);
FormPage.DomainTextBox.Text = "field validation string";
这种方法的另一个重要优点是,如果页面被更新以添加,删除或修改字段,则只需要更新FormInfo对象和FillForm函数,并且不需要修改调用FillForm函数的特定测试用例 - 假设他们正在使用您的一个常见的FormInfo对象。获得更多覆盖的另一种可能性是设置一个常用的FormInfo对象,以便为每个符合最小/最大长度的字段生成随机字符串,并在所有不同的允许字符之间循环。这允许你从同一组测试中获得一些额外的测试,但是如果你只从特定的字符串开始获得失败结果,它也会增加一些噪音,所以要小心。
看看[我的stackoverflow问题](http://stackoverflow.com/questions/8149808/whats-the-best-way-to-use-selenium-pageobject-design-pattern)为例如何我将要使用页面对象设计模式。 我不是100%的自己,但从很多阅读,我敢肯定我的正确路线,希望我粘贴帮助你。 –
http://selenium-tutorial.blogspot.com/2012/06/webdriver-page-objects-pattern.html –
您可以将所有类似的WebElement类型放入列表中。所以,如果您有40个文本字段可以从列表中逐一绘制,请获取“名称”或“ID”以标识它,然后对其进行操作。 – djangofan