Navigation (back, forward, refresh) in Selenium Java - Build an Automation Script
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import java.time.Duration; import static org.junit.jupiter.api.Assertions.assertEquals; public class NavigationTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "path/to/chromedriver"); WebDriver driver = new ChromeDriver(); WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); try { // Step 1: Navigate to page1 driver.get("https://example.com/page1"); // Step 2: Click link to go to page2 WebElement nextPageLink = wait.until(ExpectedConditions.elementToBeClickable(By.id("nextPageLink"))); nextPageLink.click(); // Wait for page2 to load wait.until(ExpectedConditions.urlToBe("https://example.com/page2")); // Step 3: Navigate back to page1 driver.navigate().back(); // Wait for page1 to load wait.until(ExpectedConditions.urlToBe("https://example.com/page1")); // Step 4: Assert URL is page1 assertEquals("https://example.com/page1", driver.getCurrentUrl(), "URL after back navigation should be page1"); // Step 5: Navigate forward to page2 driver.navigate().forward(); // Wait for page2 to load wait.until(ExpectedConditions.urlToBe("https://example.com/page2")); // Step 6: Assert URL is page2 assertEquals("https://example.com/page2", driver.getCurrentUrl(), "URL after forward navigation should be page2"); // Step 7: Refresh the page driver.navigate().refresh(); // Wait for page2 title wait.until(ExpectedConditions.titleIs("Page 2 Title")); // Step 8: Assert page title after refresh assertEquals("Page 2 Title", driver.getTitle(), "Page title after refresh should be 'Page 2 Title'"); System.out.println("Test Passed: Navigation back, forward, and refresh works correctly."); } finally { driver.quit(); } } }
This test script uses Selenium WebDriver with Java to automate browser navigation.
First, it opens https://example.com/page1. Then it clicks the link with id nextPageLink to go to page 2.
It waits explicitly for the URL to change to page 2 before continuing.
Next, it uses driver.navigate().back() to go back to page 1 and waits for the URL to confirm the navigation.
Assertions check the current URL after back and forward navigation to ensure correctness.
Then it navigates forward to page 2 again and refreshes the page.
After refresh, it waits for the page title to be correct and asserts it.
Explicit waits ensure the page is fully loaded before assertions, preventing flaky tests.
The test ends by closing the browser.
Now add data-driven testing with 3 different pairs of URLs and expected titles for navigation and refresh verification.
Practice
driver.navigate().back() method do in Selenium WebDriver?Solution
Step 1: Understand the back() method
Theback()method simulates clicking the browser's back button, moving to the previous page in history.Step 2: Compare with other navigation methods
forward()moves forward,refresh()reloads the page, and closing the browser is done bydriver.close().Final Answer:
It navigates the browser to the previous page in history. -> Option BQuick Check:
back() = previous page [OK]
- Confusing back() with refresh()
- Thinking back() closes the browser
- Mixing back() with forward()
Solution
Step 1: Recall the refresh method syntax
In Selenium Java, refreshing the page is done by callingdriver.navigate().refresh();.Step 2: Eliminate incorrect options
driver.refresh(),driver.navigate().reload(), anddriver.refreshPage()are not valid Selenium WebDriver methods.Final Answer:
driver.navigate().refresh(); -> Option AQuick Check:
refresh() method is under navigate() [OK]
- Using driver.refresh() directly
- Using non-existent reload() method
- Confusing refresh with back or forward
driver.get("https://example.com/page1");
driver.get("https://example.com/page2");
driver.navigate().back();
String currentUrl = driver.getCurrentUrl();What will be the value of
currentUrl after execution?Solution
Step 1: Trace navigation steps
The driver first opens page1, then page2. Callingnavigate().back()moves back to page1.Step 2: Check current URL after back()
After going back,getCurrentUrl()returns the URL of page1.Final Answer:
"https://example.com/page1" -> Option CQuick Check:
back() returns to previous URL [OK]
- Assuming current URL stays on page2
- Expecting an exception on back()
- Confusing back() with refresh()
driver.get("https://example.com");
driver.navigate().forward();
String url = driver.getCurrentUrl();What is the problem?
Solution
Step 1: Understand forward() behavior
Theforward()method moves forward in browser history only if there is a forward page available.Step 2: Analyze code context
Since noback()was called before, there is no forward page, soforward()does nothing.Final Answer:
Calling forward() without a previous back() navigation does nothing. -> Option DQuick Check:
forward() needs prior back() [OK]
- Expecting forward() to always change page
- Thinking forward() causes syntax error
- Confusing get() and navigate().to()
Solution
Step 1: Understand navigation flow
To test returning to the original page, first go back, then forward to return to the original page.Step 2: Verify correct command order
driver.navigate().back(); driver.navigate().forward(); String url = driver.getCurrentUrl(); correctly callsback()thenforward(), then gets the current URL.Final Answer:
driver.navigate().back(); driver.navigate().forward(); String url = driver.getCurrentUrl(); -> Option AQuick Check:
Back then forward returns to original URL [OK]
- Calling forward() before back()
- Using refresh() instead of forward()
- Not checking URL after navigation
Ready to prove it?
Pass the test and this pattern moves unknown
