I looked at the discussions on the online forums and on this website and added the wait function. However, it continues to show this error Here is the code for the problem:
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.google.common.base.Function;
public class WebDriverNavigate {
public static void main(String[] args) throws InterruptedException {
System.setProperty("webdriver.gecko.driver",System.getProperty("user.dir")+"/GeckoDriver/geckodriver.exe");
WebDriver driver = new FirefoxDriver();
driver.navigate().to("http://www.google.com");
WebElement textbox = driver.findElement(By.id("lst-ib"));
textbox.sendKeys("Search on Google");
WebDriverWait wait = new WebDriverWait(driver,10);
wait.until(visibilityOfElementLocated(By.id("lst-ib")));
driver.findElement(By.name("btnK")).click();;
textbox.clear();
textbox.sendKeys("This is the second search");
WebElement searchbutton2 = driver.findElement(By.id("fZl"));
searchbutton2.click();
driver.navigate().back();
driver.navigate().forward();
driver.navigate().refresh();
}
private static Function<WebDriver,WebElement> visibilityOfElementLocated(final By locator) {
return new Function<WebDriver, WebElement>() {
@Override
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
};
}
}
Here is the HTML snippet:
<input class="gsfi" id="lst-ib" maxlength="2048" name="q" autocomplete="off" title="Search" value="Search on Google" aria-label="Search" aria-haspopup="false" role="combobox" aria-autocomplete="list" style="border: medium none; padding: 0px; margin: 0px; height: auto; width: 100%; background: transparent url("data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D") repeat scroll 0% 0%; position: absolute; z-index: 6; left: 0px; outline: medium none;" dir="ltr" spellcheck="false" type="text">
Error message on the console:
Exception in thread "main" org.openqa.selenium.StaleElementReferenceException: The element reference of stale: either the element is no longer attached to the DOM or the page has been refreshed