Tôi luôn muốn phá vỡ mọi thứ lên thành các nhóm thông tin liên quan. Ví dụ, nếu tôi có một lớp người dùng tôi có thể phá vỡ nó thành một vài lớp nhỏ hơn: LoginCredentials, ProfileInfo, Settings, vv, nhưng tôi vẫn sẽ thường có một lớp người dùng cấp cao nhất có chứa các lớp con này.
Một điều tôi chắc chắn sẽ khuyên bạn nên chuyển đối tượng vào một hàm FillForm thay vì tất cả các hàm riêng lẻ đó. Có một số lợi thế lớn khi sử dụng phương pháp này. Một, bạn có thể có một số đối tượng được cấu hình sẵn "phổ biến" mà bạn sử dụng cho nhiều trường hợp thử nghiệm của mình. Ví dụ:
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);
HOẶC, bạn có thể tạo đối tượng người bán hoàn toàn mới cho trường hợp thử nghiệm cụ thể nếu cần.Bạn cũng có thể làm những việc như xác nhận lĩnh vực hoặc sử dụng các đối tượng này, hoặc những gì tôi thường làm là phá vỡ các mô hình đối tượng trang để xác nhận lĩnh vực cụ thể, vì vậy nếu tôi xác nhận lĩnh vực miền thương tôi có thể làm điều này:
Info1.Domain = null; //This should make the FillForm function skip doing anything with this field.
FormPage.FillForm(Info1);
FormPage.DomainTextBox.Text = "field validation string";
Một ưu điểm quan trọng khác của phương pháp này là nếu trang được cập nhật để thêm, xóa hoặc sửa đổi các trường, bạn chỉ cần cập nhật đối tượng FormInfo và hàm FillForm của bạn, và sẽ không cần sửa đổi các trường hợp thử nghiệm cụ thể gọi hàm FillForm - giả sử họ đang sử dụng một trong các đối tượng FormInfo phổ biến của bạn. Một khả năng khác để có được mức độ phù hợp hơn là thiết lập một trong các đối tượng FormInfo phổ biến của bạn để tạo chuỗi ngẫu nhiên cho mỗi trường tuân thủ độ dài tối thiểu/phút và chu kỳ giữa tất cả các ký tự được phép khác nhau. Điều này cho phép bạn có được một số thử nghiệm bổ sung trong cùng một tập kiểm tra, mặc dù nó cũng có thể thêm một số nhiễu nếu bạn bắt đầu nhận kết quả thất bại chỉ từ các chuỗi cụ thể, vì vậy hãy cẩn thận.
Nguồn
2011-11-03 19:49:01
Hãy xem [câu hỏi ngăn xếp chồng của tôi] (http://stackoverflow.com/questions/8149808/whats-the-best-way-to-use-selenium-pageobject-design-pattern) để biết ví dụ về cách Tôi sẽ sử dụng mẫu thiết kế đối tượng trang. Tôi không phải 100% bản thân mình nhưng từ rất nhiều đọc, tôi chắc chắn im trên dòng bên phải, hy vọng những gì tôi đã dán giúp bạn. –
http://selenium-tutorial.blogspot.com/2012/06/webdriver-page-objects-pattern.html –
Bạn có thể đặt tất cả các loại WebElement tương tự vào một Danh sách. vì vậy, nếu bạn có 40 trường văn bản, bạn có thể vẽ từ danh sách từng cái một, nhận được "tên" hoặc "id" để xác định nó, và sau đó hoạt động trên nó. – djangofan