Quando stai simulando avendo all'utente di inserire un nuovo URL nella la barra dell'URL del browser, quindi è responsabilità della classe di test creare l'oggetto della pagina di cui ha bisogno.
D'altra parte, quando si sta facendo qualche operazione sulla pagina che indurrebbe il browser a puntare a un'altra pagina - ad esempio, facendo clic su un collegamento o inviando un modulo - allora è responsabilità di quella pagina oggetto per restituire l'oggetto della pagina successiva.
Poiché non conosco abbastanza le relazioni tra la tua pagina iniziale, la pagina dell'account e la pagina dei risultati per dirti esattamente come si svolgerà nel tuo sito, userò un'app store online come esempio anziché.
Diciamo che hai una pagina di ricerca. Quando si invia il modulo in SearchPage, viene restituita una ResultsPage. E quando fai clic su un risultato, ottieni una pagina prodotto. Così le classi sarebbero simile a questa (abbreviato in appena i relativi metodi):
public class SearchPage {
public void open() {
return driver.get(url);
}
public ResultsPage search(String term) {
// Code to enter the term into the search box goes here
// Code to click the submit button goes here
return new ResultsPage();
}
}
public class ResultsPage {
public ProductPage openResult(int resultNumber) {
// Code to locate the relevant result link and click on it
return new ProductPage();
}
}
Il metodo di prova per eseguire questa storia sarebbe simile a questa:
@Test
public void testSearch() {
// Here we want to simulate the user going to the search page
// as if opening a browser and entering the URL in the address bar.
// So we instantiate it here in the test code.
SearchPage searchPage = new SearchPage();
searchPage.open(); // calls driver.get() on the correct URL
// Now search for "video games"
ResultsPage videoGameResultsPage = searchPage.search("video games");
// Now open the first result
ProductPage firstProductPage = videoGameResultsPage.openResult(0);
// Some assertion would probably go here
}
Quindi, come si può vedere, c'è questo "concatenamento" di oggetti Page dove ognuno restituisce il successivo.
Il risultato è che si finisce con un sacco di oggetti di pagina diversi che istanziano altri oggetti di pagina. Quindi, se hai un sito di dimensioni considerevoli, potresti prendere in considerazione l'utilizzo di un framework di iniezione delle dipendenze per la creazione di tali oggetti di pagina.
Cosa intendete esattamente per "oggetto pagina"? – Alp