I am trying to convert my selenium test from Firefox browser to HTMLUnit driver. But, when I try to run the HTMLUnit test , it gives me error for XPATH. The Firefox browser test runs absolutely fine.
My application test suite extensively uses XPATH . Hence, I am intentionally trying out with XPATH.
This is the error :
Exception in thread "main" org.openqa.selenium.NoSuchElementException:
Unable to locate a node using .//*[@id='tsf']/div[2]/div[3]/center/input[1]
For documentation on this error, please visit:
http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09
19:55:52'
System info: host: 'WL309476', ip: '10.83.16.25', os.name: 'Windows 7',
os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_66'
Driver info: driver.version: HtmlUnitDriver
at
org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByXPath
(HtmlUnitDriver.java:1161)
at org.openqa.selenium.By$ByXPath.findElement(By.java:361)
at
org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1715)
at org.openqa.selenium.htmlunit.HtmlUnitDriver$5.call(HtmlUnitDriver.java:1)
at
org.openqa.selenium.htmlunit.HtmlUnitDriver.implicitlyWaitFor
(HtmlUnitDriver.java:1363)
at
org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement
(HtmlUnitDriver.java:1711)
at
org.openqa.selenium.htmlunit.HtmlUnitDriver.findElement
(HtmlUnitDriver.java:606)
at seleniumtest.Test_Google.main(Test_Google.java:17)
This is my Firefox browser test :
WebDriver driver = new FirefoxDriver();
driver.get("https://www.google.co.in/");
WebElement e =driver.findElement(By.xpath(".//*[@id='tsf']/div[2]/div[3]/center/input[1]"));
System.out.println("The current element is " + e.getAttribute("value"));
This is my HtmlUnit test :
WebDriver driver = new HtmlUnitDriver(true);
driver.get("https://www.google.co.in/");
WebElement e =driver.findElement(By.xpath(".//* [@id='tsf']/div[2]/div[3]/center/input[1]"));
System.out.println("The current element is " + e.getAttribute("value"));
Without XPATH it works fine , even on htmlunit driver. Problem happens when I have to use XPATH.
I have tried implicit timeout as well as sleep , but it did not work.
There is no dependency on Javascript as well.
When I tried with PhantomJS , I observed same behavior ie it does not work with XPATH.
Here is the PhantomJS code :
File file = new File("C:/Parag/Software/phantomjs-2.0.0-windows/phantomjs-2.0.0-windows/bin/phantomjs.exe");
System.setProperty("phantomjs.binary.path", file.getAbsolutePath());
WebDriver driver = new PhantomJSDriver();
driver.get("https://www.google.co.in/");
WebElement element = driver.findElement(By.xpath(".//*[@id='tsf']/div[2]/div[3]/center/input[1]"));
System.out.println(element.isDisplayed());
The above code works fine with Firefox driver but fails on PhantomJS.