Bhagyalaxmi
Bhagyalaxmi

Reputation: 1

Selenium radiobutton selection

I have an HTML code as follows:

<label class="top" for="id_gender2">
<div id="uniform-id_gender2" class="radio">
<span>
<input id="id_gender2" type="radio" value="2" name="id_gender">
</span>
</div>
Mrs.
</label>

The radio button is getting selected after mouse hover.

I have tried with all possible attributes for selection but I am getting element not found exception.Please let me know how to write java script in webdriver.

Upvotes: 0

Views: 306

Answers (3)

optimistic_creeper
optimistic_creeper

Reputation: 2799

Your element is probably not loaded properly while getting error. You'd better use explicit wait in your script. Wait until your specific element loaded to be visible/clickable. I think, this may help you.

Code snippet:

    By yourElementToSelect = By.id("id_gender2");
    WebDriverWait wait = new WebDriverWait(driver, 20);
    wait.until(ExpectedConditions.visibilityOfElementLocated(yourElementToSelect));         
    driver.findElement(yourElementToSelect).click();

Upvotes: 0

Andersson
Andersson

Reputation: 52665

Try following code and let me know the result:

Actions action = new Actions(driver);
WebElement hover = driver.findElement(By.xpath("//*[@class='radio hover']"));
action.moveToElement(hover).moveToElement(driver.findElement(By.xpath("//input[@id='id_gender2']"))).click().build().perform();

UPDATE

Actually there is no need in mouse hover. Target radio seem to be initially non-clickable, so you just need extra time to wait for page complete rendering:

WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("input#id_gender2")));
driver.findElement(By.cssSelector("input#id_gender2")).click();

Upvotes: 1

Poojan Dave
Poojan Dave

Reputation: 119

Try javascript executor as follow:

WebElement element = driver.findElement(By.id("id_gende‌​r2"));
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);

Upvotes: 0

Related Questions