硒放射性选择

时间:2016-10-24 08:38:50

标签: selenium

我有一个HTML代码如下:

<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>

鼠标悬停后,单选按钮被选中。

我已尝试使用所有可能的属性进行选择,但我发现元素未找到异常。请让我知道如何在webdriver中编写java脚本。

3 个答案:

答案 0 :(得分:1)

尝试以下代码并告诉我结果:

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();

<强>更新

实际上鼠标悬停时没有必要。目标无线电似乎最初是不可点击的,因此您只需要额外的时间等待页面完成渲染:

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

答案 1 :(得分:0)

尝试javascript执行程序如下:

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

答案 2 :(得分:0)

获取错误时,您的元素可能无法正确加载。您最好在脚本中使用显式等待。等到加载的特定元素可见/可点击。我想,这可能对你有帮助。

代码段:

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