Shruti
Shruti

Reputation: 51

How to insert text in smart textbox in selenium webdriver?

I am trying to automate the code of submit resume page, it consists on smart textboxes, which gives suggestions below as soon as you type few text in it. you need to select and input into the textbox from the suggestions given. Below is the code and the url:

WebDriver w= new FirefoxDriver();
w.get("https://www.hrmantra.com/LetsLead/18_Recruitment/SubmittResume.aspx?cn=LetsLead");
w.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
w.findElement(By.id("StCityName_txtSpeedName")).sendKeys("Mumbai");

Only sendkeys command is not working as the entered value has to be selected and the control needs to be closed.

Upvotes: 2

Views: 4273

Answers (3)

Vicky
Vicky

Reputation: 3021

The text box has a select drop down box which appears dynamically on entering the city from it the user selects his city but this select box is inside an iframe (iframe id : SpeedTyperFrameID)so we need to switch to it and then access the select box

Below is the code

    WebElement city = driver.findElement(By.xpath("//*[@id='StCityName_txtSpeedName']"));

    city.click();

    city.sendKeys("chennai");

   //wait for the iframe to load and then switch to it

    new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("SpeedTyperFrameID")));

    Thread,sleep(3000);//added just to show u the effect remove it      
    WebElement byValue = driver.findElement(By.id("SelectList"));

    //using select class to select the element by its text      
    Select select = new Select(byValue);

    select.selectByVisibleText("Chennai");

    //switch back to default content inorder to access other elements outside the iframe

    driver.switchTo().defaultContent();

I have tested the above code it is working fine

Kindly get back if you have any queries.

Upvotes: 1

JeffC
JeffC

Reputation: 25596

It's because there is no ID of id=StCityName_txtSpeedName on the page. You don't use id=... for the ID, you just type the ID.

See below.

w.findElement(By.id("StCityName_txtSpeedName")).sendKeys("Mumbai");

Upvotes: 0

dmr
dmr

Reputation: 556

Ideally, After you type partial text into input you have to find all suggestions from dropdown list and click on it. Perhaps, try to use enter key, but I am not aware that it will help

element.sendKeys("Mumbai" + Keys.ENTER)

Upvotes: 0

Related Questions