使用Javascript执行器选择单选按钮

时间:2016-08-29 20:08:27

标签: javascript selenium radio-button executor

我正在尝试选择'是' '无'正常情况下页面中的选项'点击()'我没有使用JSExecutor!问题是它是选择选项,但是值从未作为输入发送,并且当我尝试继续时应用程序抛出错误。

以差异方式尝试xpath!

WebElement st_1 = driver.findElement(By.id("app-select-no"));
 ((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;", st_1);

下面是HTML

div class="form-group input-form-group col-xs-6">
<input id="app-select-no" class="form-control ng-pristine ng-untouched ng-valid ng-valid-required" type="radio" ng-value="false" ng-model="openAccount.abc" required="" name="affRadioGroup" value="false" aria-checked="true" tabindex="0" aria-required="false" aria-invalid="false"/>
<label class="field-label-radio text-bold active" ng-class="{active : openAccount.abc==false}" for="app-select-no">
<span translate-once="NO_BUTTON">No</span>
</label>
</div>

2 个答案:

答案 0 :(得分:3)

让我看看如果我理解,你试图在该元素上选择“是”或“否”,但我看到你点击的元素是一个输入。除了单击元素之外,您还需要将“值”发送到输入。

我猜你的问题不是使用executeScript的点击,但你也可以试试这个:

WebElement st_1 = driver.findElement(By.id("app-select-no"));
((JavascriptExecutor)driver).executeScript("arguments[0].click();", st_1 );

要将值发送到该输入,您需要执行此操作:

driver.findElement(By.id("st_1")).sendKeys("value here");

希望它有所帮助。

答案 1 :(得分:1)

在执行javascript之前放置等待元素解决了问题。这是使用javascript和没有javascript(使用webelement click)的工作代码:

driver.get("file:///home/sgupta/Desktop/a.html");
    WebElement radio = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#app-select-no")));
    JavascriptExecutor executor = (JavascriptExecutor)driver.getDriver();
    executor.executeScript("arguments[0].checked=true", radio);

使用WebElement方法:

driver.get("file:///home/sgupta/Desktop/a.html");
WebElement radio = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("input#app-select-no")));
radio.click();