Sometimes, querying the browser can be expensive. For example, if you are testing tables with large numbers of web elements (e.g. a web element for each cell), performance can be slow, and memory usage high. Normally, Thucydides will requery the page (and create a new Page Object) each time you call Pages.get()
or Pages.currentPageAt()
. If you are certain that the page will not change (i.e., that you are only performing read-only operations on the page), you can use the onSamePage() method of the ScenarioSteps class to ensure that subsequent calls to Pages.get()
or Pages.currentPageAt()
will return the same page object:
@RunWith(ThucydidesRunner.class) public class WhenDisplayingTableContents { @Managed public WebDriver webdriver; @ManagedPages(defaultUrl = "http://my.web.site/index.html") public Pages pages; @Steps public DemoSiteSteps steps; @Test public void the_user_opens_another_page() { steps.navigate_to_page_with_a_large_table(); steps.onSamePage(DemoSiteSteps.class).check_row(1); steps.onSamePage(DemoSiteSteps.class).check_row(2); steps.onSamePage(DemoSiteSteps.class).check_row(3); } }