Cuando se está simulando que el usuario introduzca un nuevo URL en la barra de URL del navegador, entonces es responsabilidad de la clase de prueba crear el objeto de página que necesita.
Por otro lado, cuando realiza alguna operación en la página que haría que el navegador señale a otra página, por ejemplo, haciendo clic en un enlace o enviando un formulario, entonces es responsabilidad de esa página objeto para devolver el objeto de la página siguiente.
Dado que no sé lo suficiente sobre las relaciones entre su página de inicio, página de cuenta y página de resultados para decirle exactamente cómo se desarrollaría en su sitio, utilizaré una aplicación de tienda en línea como ejemplo en lugar.
Digamos que tienes una página de búsqueda. Cuando envía el formulario en la página de búsqueda, devuelve una página de resultados. Y cuando haces clic en un resultado, obtienes una ProductPage. Por lo que las clases se vería algo como esto (abreviado a sólo los métodos pertinentes):
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();
}
}
El método de prueba para ejecutar esta historia sería algo como esto:
@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
}
Así como se puede ver, existe este "encadenamiento" de Objetos de página donde cada uno devuelve el siguiente.
El resultado es que terminas con muchos objetos de página diferentes creando instancias de otros objetos de página. Entonces, si tiene un sitio de un tamaño considerable, podría considerar usar un marco de inyección de dependencia para crear esos objetos de página.
¿Qué quiere decir exactamente con "objeto de página"? – Alp