我總是喜歡把任務分配的相關信息組。例如,如果我有一個用戶類,我可能會將它分解爲幾個較小的類: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