This is the HTML source of the button:

<input value="Google Search" aria-label="Google Search" name="btnK" type="submit">

This is my code:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
//import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class google {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        WebDriver driver = new ChromeDriver();
            //driver.findElement(By.xpath("//*[@id='TZA4S']/div[1]/div[1]/input")).sendKeys("Kedarnath review");

            driver.findElement(By.xpath("//*[@id='tsf']/div[2]/div/div[1]/div/div[1]/input")).sendKeys("kedarnath collection");


            /*Issue in below line able to click on Search Button*/

5 Answers 5

//div[@class='FPdoLc VlcLAe']//input[@type='submit' and @value= 'Google Search']

There are 2 matching nodes available. The only difference is the class name. So construct your xpath with the class name


This will work:

Solution 1: //div[@class='FPdoLc VlcLAe']//input[@name='btnK']

Explanation: If you are going to use //*[@name='btnK'] or driver.findElement(By.name("btnK")).click(); then there are 2 matching nodes.

enter image description here

Solution 2: In case you want to go with locator name - then try below solution

(//*[@name='btnK'])[ 2] (write 2 in bracket without spaces)

enter image description here

  • 3
    Please edit your answer to explain why your suggestion will work and why the OP's find by name failed. That will make your answer more relevant to other situations where someone is having problems with locators
    – Kate Paulk
    Commented May 31, 2019 at 19:00



Since the name btnK has two matches, so use this above line.

  • the above solution is not working and found below exception Exception in thread "main" java.lang.Error: Unresolved compilation problem: The type of the expression must be an array type but it resolved to WebElement at google.main(google.java:25) Commented Dec 23, 2018 at 9:13
  • It should be findElements I think, and in that case if it is an array that will be returned, using index 2 will return the third button if there is or an ArrayOutOfBound exception will be thrown. Also I would not recommend to find an element using such index as if the page changes, a new button is introduced your test will be broken. Commented Dec 23, 2018 at 11:50
  • for findElements the IDE itself showing “The type of the expression must be an array type but it resolved to List <WebElements>” Commented Dec 24, 2018 at 18:07
  1. The "Google Search" button XPath: //div[@class="FPdoLc VlcLAe"]//input[1];
  2. The "I'm Feeling Lucky" button XPath: //div[@class="FPdoLc VlcLAe"]//input[2].

The below XPath will enable the scripts to click on "Google Search" button:

driver.findElement(By.xpath("//*[@class='FPdoLc VlcLAe']/center/input[1]")).click();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.