title: How to Click a Link in Selenium Webdriver
body: <p>Ima trying to click all the elements present in the Html</p>
  
  <p><a href="http://www.flipkart.com/" rel="nofollow">http://www.flipkart.com/</a> Under this Electronics -> Shop by Categories -></p>
  
  <p>below is the sample part of the Html </p>
  
  <pre><code>&lt;a class="" data-tracking-id="0_Samsung" href="/mobiles/samsung~brand/pr?sid=tyy,4io&amp;amp;otracker=hp_nmenu_sub_electronics_0_Samsung"&gt;Samsung&lt;/a&gt;
  
  &lt;a class="" data-tracking-id="0_All Brands" href="/mobiles/pr?sid=tyy,4io&amp;amp;otracker=hp_nmenu_sub_electronics_0_All%20Brands"&gt;All Brands&lt;/a&gt;
  
  
  &lt;a class="" data-tracking-id="0_All Brands" href="/laptops/pr?sid=6bo,b5g&amp;amp;otracker=hp_nmenu_sub_electronics_0_All%20Brands"&gt;All Brands&lt;/a&gt;
  </code></pre>
  
  <p>iam clicking using below </p>
  
  <pre><code> WebElement ul = driver.findElement(By.id("menu-electronics-tab-0-content"));
         List&lt;WebElement&gt; lis = ul.findElements(By.tagName("li"));
         System.out.println(""+lis.size());
         String[] linksText = new String[lis.size()];
         int index = 0;
         for(WebElement element : lis){
  
             linksText[index] = element.getText();
  
          String string = linksText[index];
  
          if(string.contains(" ")){
              linksText[index]= string.substring(0, string.indexOf(" ")); 
          }
  
             index++;
         }     
                 for(index =0; index &lt; linksText.length; index++){
             String xpath = "//*[contains(@href,'%s')]";
             String y = linksText[index];
                     String xpathOfElement = String.format(xpath, String.valueOf(y));
                        System.out.println("Name 1  "+driver.findElement(By.xpath(xpathOfElement)).getText());
                     driver.manage().timeouts().implicitlyWait(50000, TimeUnit.MILLISECONDS);
  
                            driver.findElement(By.xpath(xpathOfElement)).click();
  </code></pre>
  
  <p>When iam running the code it is proceeding till i = 12 till HP after that it is 
  throwing an error. there are 83 Elements present. i need to click and navigate back</p>
  
  <pre><code>Name 1  Mobiles
  Name 1  Bluetooth Headsets
  Name 1  Laptops
  Name 1  Apple
  Name 1  
  FAILED: Electronic
  org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
  Command duration or timeout: 50.20 seconds
  Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
  System info: host: 'VALUED-8JGOG5PH', ip: '192.168.1.4', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_45'
  Session ID: 7d9304d9-fe1a-444d-b6b6-4669bfc46a33
  Driver info: org.openqa.selenium.firefox.FirefoxDriver
  Capabilities [{platform=XP, acceptSslCerts=true, javascriptEnabled=true, cssSelectorsEnabled=true, databaseEnabled=true, browserName=firefox, handlesAlerts=true, browserConnectionEnabled=true, webStorageEnabled=true, nativeEvents=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=26.0}]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
      at java.lang.reflect.Constructor.newInstance(Unknown Source)
      at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
      at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
      at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
      at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
      at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:79)
      at Examples.FlipkartTest2.Electronic(FlipkartTest2.java:64)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
      at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
      at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
      at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
      at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
      at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
      at org.testng.TestRunner.privateRun(TestRunner.java:767)
      at org.testng.TestRunner.run(TestRunner.java:617)
      at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
      at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
      at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
      at org.testng.SuiteRunner.run(SuiteRunner.java:240)
      at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
      at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
      at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
      at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
      at org.testng.TestNG.run(TestNG.java:1057)
      at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
      at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)
      at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175)
  Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element is not currently visible and so may not be interacted with
  Build info: version: '2.39.0', revision: 'ff23eac', time: '2013-12-16 16:11:15'
  System info: host: 'VALUED-8JGOG5PH', ip: '192.168.1.4', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_45'
  Driver info: driver.version: unknown
      at &lt;anonymous class&gt;.fxdriver.preconditions.visible(file:///C:/Users/ADMINI~1/AppData/Local/Temp/anonymous281959659031274025webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:8179)
      at &lt;anonymous class&gt;.DelayedCommand.prototype.checkPreconditions_(file:///C:/Users/ADMINI~1/AppData/Local/Temp/anonymous281959659031274025webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10814)
      at &lt;anonymous class&gt;.DelayedCommand.prototype.executeInternal_/h(file:///C:/Users/ADMINI~1/AppData/Local/Temp/anonymous281959659031274025webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10831)
      at &lt;anonymous class&gt;.fxdriver.Timer.prototype.setTimeout/&lt;.notify(file:///C:/Users/ADMINI~1/AppData/Local/Temp/anonymous281959659031274025webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:396)
  </code></pre>
  
  <p>is there any alternate method other than href to click the Link. </p>