Когда вы имитируя имея пользователь вводит новую ссылку в строке URL-адреса браузера, тогда тестовый класс отвечает за создание требуемого объекта страницы.
С другой стороны, когда вы выполняете какую-либо операцию на странице, которая приведет к тому, что браузер укажет на другую страницу - например, нажав ссылку или отправив форму, - тогда это несет ответственность за эту страницу объект для возврата объекта следующей страницы.
Поскольку я не знаю достаточно о взаимоотношениях между вашей домашней страницей, страницей аккаунта и страницей результатов, чтобы рассказать вам, как именно это будет происходить на вашем сайте, я буду использовать приложение интернет-магазина в качестве примера вместо.
Предположим, у вас есть SearchPage. Когда вы отправляете форму в SearchPage, она возвращает страницу результатов. И когда вы нажимаете на результат, вы получаете ProductPage. Таким образом, классы будут выглядеть следующим образом (сокращенно только соответствующими методами):
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();
}
}
Метод испытания, чтобы выполнить эту историю будет выглядеть примерно так:
@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
}
Так как вы можете видеть, есть эта «цепочка» объектов страницы, где каждый возвращает следующую.
В результате вы получаете множество различных объектов страницы, создающих экземпляры других объектов страницы. Поэтому, если у вас есть сайт любого значительного размера, вы можете подумать об использовании инфраструктуры инъекций зависимостей для создания этих объектов страницы.
Что именно вы подразумеваете под «страничным объектом»? – Alp