Search code examples
javaseleniumselenium-webdriverhtmlunit-driver

Search using Selenium WebDriver works on google but Fails on yahoo


All:

I am running a simple Java application with Selenium WebDriver.
I was able to successfully run a search on http://www.google.com using org.openqa.selenium.htmlunit.HtmlUnitDriver

I tried to run the same search term on http://www.yahoo.com as shown in the following code excerpt:

    CharSequence[] searchTerm = { "bbc", "news" };
    // Create a new instance of the html unit driver
    // Notice that the remainder of the code relies on the interface, 
    // not the implementation.
    WebDriver driver = new HtmlUnitDriver();

    // And now use this to visit Google
    driver.get("http://www.yahoo.com");

    // Find the text input element by its name
    WebElement element = driver.findElement(By.name("q"));

    //searchTerm = "bbc news";
    // Enter something to search for
    element.sendKeys(searchTerm);


    // Now submit the form. WebDriver will find the form for us from the element
    element.submit();

    // Check the title of the page
    System.out.println("Page title is: " + driver.getTitle());

    driver.quit();

Howefver, it gives me the following error:

Oct 17, 2014 3:18:44 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies
WARNING: Cookie rejected [DNR="deleted", version:0, domain:.www.yahoo.com, path:/, expiry:Thu      Oct 17 15:18:45 IST 2013] Illegal domain attribute "www.yahoo.com". Domain of origin: "in.yahoo.com"
 Exception in thread "main" org.openqa.selenium.NoSuchElementException: Unable to locate element with name: q
 For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
 Build info: version: '2.43.1', revision: '5163bce', time: '2014-09-10 16:27:58'
 System info: host: , ip: , os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1',       java.version: '1.8.0_05'
  Driver info: driver.version: HtmlUnitDriver
   at org.openqa.selenium.htmlunit.HtmlUnitDriver.findElementByName(HtmlUnitDriver.java:1001)

Why does it work fine for http://www.google.com but fails for http://www.yahoo.com ?

Why does it throw the "Exception in thread main org.openqa.selenium.NoSuchElementException Unable to locate element with name q" error?

Update with Answer

Thanks to @Sriram and @ivan_ochc , I am able to run the following code that searches http://www.yahoo.com properly

    // Create a new instance of the html unit driver
    // Notice that the remainder of the code relies on the interface, 
    // not the implementation.
    WebDriver driver = new HtmlUnitDriver();

    // And now use this to visit Google
    driver.get("http://www.yahoo.com");

    // Find the text input element by its name
    WebElement element = driver.findElement(By.name("p"));

Solution

  • http://www.yahoo.com doesn't have element with name="q", it has element with name="p"