'UnexpectedTagNameException' and Element should have been "select" but was "div" error using 'Select' function through Selenium java

In this form selection of drop down is not working.

This is image

In above image I want to select 'Borrowing Capacity'

and I write code for it

    public static void main(String[] args) throws InterruptedException 
    {
    WebDriver driver =new ChromeDriver();
    //driver.manage().window().maximize();
    driver.get("http://www.ia.ca/");
    Thread.sleep(3000);
    driver.findElement(By.xpath("//*[@id=\"nav-secondaire\"]/div[1]/ul/li[4]/a")).click();
    driver.findElement(By.xpath("//*[@id=\"nav-secondaire\"]/div[1]/ul/li[4]/ul/li[1]/section/ul/li[1]/a")).click();

   //DropDown code
    WebElement selectMyElement =driver.findElement(By.xpath("//*[@id=\"grille-zone-cta\"]/div/div/div/div/div/div[2]/div[1]"));
    Select cal = new Select(selectMyElement);
    cal.selectByIndex(1);

It gives me exception

'UnexpectedTagNameException'

and error message is

Element should have been "select" but was "div"

HTML tags


Solution 1:

This error message...

'UnexpectedTagNameException' : Element should have been "select" but was "div"

...implies that you have used Select class to interact with the element where as the element was a <div>.

To click() on the element with text as Borrowing Capacity you can use the following Locator Strategy:

  • xpath:

    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//h4[@class='bta-description' and text()='Our calculators']//following::div[@class='bta-select-table row']//b[@class='button']"))).click();
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='selectric-items']//li[contains(., 'Borrowing Capacity')]"))).click();
    
  • Browser Snapshot:

BorrowingCapacity