我有一个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脚本。
答案 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_gender2"));
((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();