In this post, we will dive into what webdriver API does in terms of navigation. Selenium Navigation is the first part of Webdriver API and we will cover all navigation methods such as .get(<url>), .navigate.to, .navigate.back(), .navigate.forward(), etc…
Selenium Navigation Methods
Webdriver Navigation methods are shown below figure. In this post, I will go with method explanations then show their examples and usage.
.get (URL)
We can go to any URL with driver.get(“http://www.yahoo.com”) command.
.navigate.to(url)
We can go to any URL with driver.navigate().to(“http://www.yahoo.com”) command.
.navigate.back()
We can go back to previous page with driver.navigate().back() command.
.navigate.forward()
We can go forward from the current page to the last opened page with driver.navigate().next() command.
.navigate.refresh()
We can refresh the webpage with driver.navigate().refresh() command.
Webdriver Navigation Example
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.MethodName.class)
public class NavigationTests {
private WebDriver driver;
private WebDriverWait wait;
final private String URL1 = "http://www.yahoo.com";
final private String URL2 = "http://www.amazon.com";
@BeforeEach
public void setupTest() {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
wait = new WebDriverWait(driver, Duration.ofSeconds(10));
}
@AfterEach
public void quitDriver() {
driver.quit();
}
//.get Example
@Test
public void T01_getURLExample() {
//Go to www.yahoo.com
driver.get(URL1);
//Check title is correct
Assertions.assertEquals(driver.getTitle(), "Yahoo");
}
//.Navigate().to example
@Test
public void T02_navigateToExample() {
//Go to www.amazon.com
driver.navigate().to(URL2);
//Check title is correct
Assertions.assertEquals("Amazon.com. Spend less. Smile more.", driver.getTitle());
}
@Test
//Back - Forward - Refresh Example
public void T03_backForwardRefreshExample() {
//Go to www.yahoo.com
driver.navigate().to(URL1);
wait.until(driver -> driver.getTitle().contentEquals("Yahoo"));
//Check title is correct
Assertions.assertEquals(driver.getTitle(), "Yahoo");
//Go to www.amazon.com
driver.navigate().to(URL2);
wait.until(driver -> driver.getTitle().contentEquals("Amazon.com. Spend less. Smile more."));
//Check title is correct
Assertions.assertEquals("Amazon.com. Spend less. Smile more.", driver.getTitle());
//***Navigate Back***
driver.navigate().back();
wait.until(driver -> driver.getTitle().contentEquals("Yahoo"));
//Check title is correct
Assertions.assertEquals(driver.getTitle(), "Yahoo");
//***Navigate Forward***
driver.navigate().forward();
wait.until(driver -> driver.getTitle().contentEquals("Amazon.com. Spend less. Smile more."));
//Check title is correct
Assertions.assertEquals("Amazon.com. Spend less. Smile more.", driver.getTitle());
//***Refresh The Page***
driver.navigate().refresh();
wait.until(driver -> driver.getTitle().contentEquals("Amazon.com. Spend less. Smile more."));
Assertions.assertEquals("Amazon.com. Spend less. Smile more.", driver.getTitle());
}
}GitHub Project
https://github.com/swtestacademy/selenium-examples
Important Note: Navigation of webdriver halts until the HTML of the page is fully loaded but javascript is not included in this context. Thus, in some cases synchronization is required for error-prone test automation.
Thanks,
Onur Baskirt

Onur Baskirt is a Software Engineering Leader with international experience in world-class companies. Now, he is a Software Engineering Lead at Emirates Airlines in Dubai.


Very useful article. good job.
In this tutorial, you forgot to mention that you use JUnit version 4. As I read you’re this series of selenium tutorial from beginning one after another I got confused because as you mention the link of previous two tutorials here it made a direct point that reader should import Junit 5 version as you mention in your first article.
Yes, you are right. I need to update all the articles. It will take time but I will do that. You can use JUnit 5 (Jupiter) dependencies or you can use TestNG. I like TestNG more for selenium usage. I use JUnit 5 for API tests along with WebTestClient and RestAssured. For virtualization, I am using Wiremock and Spring Cloud Contract.
Incomplete guide
Thanks for your feedback. What topics are missing? I will try to make it complete regarding your valuable feedback Edgardo.