mi piace sempre di rompere le cose in gruppi di informazioni correlate. Ad esempio, se dispongo di una classe utente, potrei suddividerla in alcune classi più piccole: LoginCredentials, ProfileInfo, Settings, ecc., Ma di solito avrò sempre una classe utente di livello superiore che contiene queste sottoclassi.
Una cosa che consiglierei sarebbe di passare un oggetto a una funzione FillForm piuttosto che a tutte quelle singole funzioni. Ci sono alcuni grandi vantaggi nell'usare questo approccio. Uno, potresti avere alcuni oggetti "comuni" preconfigurati che usi per molti dei tuoi casi di test. Per esempio:
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);
O, è possibile creare un nuovo oggetto mercantile per uno specifico caso di test, se necessario.È anche possibile fare cose come validazione campo sia utilizzando questi oggetti, o di quello che faccio di solito è rompere il modello oggetto pagina per specifica verifica dei campi, quindi se io sono la convalida del campo dominio mercantile potrei fare questo:
Info1.Domain = null; //This should make the FillForm function skip doing anything with this field.
FormPage.FillForm(Info1);
FormPage.DomainTextBox.Text = "field validation string";
Un altro importante vantaggio di questo approccio è che se la pagina viene sempre aggiornata per aggiungere, rimuovere o modificare campi, è necessario aggiornare solo l'oggetto FormInfo e la funzione FillForm e non è necessario modificare casi di test specifici che richiamano la funzione FillForm - supponendo che stiano utilizzando uno dei comuni oggetti FormInfo. Un'altra possibilità per ottenere una maggiore copertura sarebbe quella di impostare uno dei comuni oggetti FormInfo per generare stringhe casuali per ciascuno dei campi che rispettano la lunghezza minima/massima e scorrere tra tutti i diversi caratteri consentiti. Ciò consente di ottenere alcuni test aggiuntivi dallo stesso set di test, anche se potrebbe anche aggiungere un po 'di rumore se si inizia a ottenere risultati di errore solo da stringhe specifiche, quindi fate attenzione.
Dai un'occhiata alla [mia domanda stackoverflow] (http://stackoverflow.com/questions/8149808/whats-the-best-way-to-use-selenium-pageobject-design-pattern) per un esempio su come Utilizzerò lo schema di progettazione degli oggetti della pagina. Io non sono al 100% me stesso ma da molte letture, sono sicuro che sto nella giusta direzione, spero che ciò che ho incollato ti aiuti. –
http://selenium-tutorial.blogspot.com/2012/06/webdriver-page-objects-pattern.html –
È possibile inserire tutti i tipi WebElement simili in un elenco. quindi, se hai 40 campi di testo puoi disegnare dall'elenco uno per uno, ottenere il "nome" o "id" per identificarlo, e quindi operare su di esso. – djangofan