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

使用Javascript执行器选择单选按钮,javascript,selenium,radio-button,executor,Javascript,Selenium,Radio Button,Executor,我正在尝试在页面中选择“是”“否”选项,因为正常的“Click()”不起作用,我已经为此使用了JSExecutor!问题是它正在选择选项,但该值从未作为输入发送,当我尝试继续时,应用程序抛出错误 以不同的方式尝试了xpath WebElement st_1 = driver.findElement(By.id("app-select-no")); ((JavascriptExecutor)driver).executeScript("arguments[0].checked = true;",

我正在尝试在页面中选择“是”“否”选项,因为正常的“Click()”不起作用,我已经为此使用了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>
div class=“表格组输入表格组col-xs-6”>
不

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

我猜你的问题不在于点击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");

希望能有帮助

在执行javascript之前放置wait-for元素解决了这个问题。以下是使用javascript和不使用javascript(使用webelement单击)的工作代码:

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

恐怕我没有收到这部分“但值从未作为输入发送”,你能详细说明一下吗?你是说选择了这个选项,但我不明白问题出在哪里。您还可以发布抛出的异常吗?输入只是一个单选按钮,因此不需要sendkeys。如果我们只应用javascript.checked=true,它应该可以工作,但是我们需要在执行javascript之前等待。我已经发布了答案。没错,我没有在html上看到@type属性。使用JavaScript Executor,我可以选择单选按钮,但该选项没有在后端呈现,这不允许我从该页面移动@Satish:我也使用了wait。@Joe这段代码选择了单选按钮,现在信息如何从UI传递到后端,这实际上取决于设计。从Selenium中,我们只能确保选中单选按钮。尝试使用webelement方法使用第二个选项,并将wait放在后面:wait直到选中单选按钮。
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();