无法使用Selenium单击单选按钮

时间:2016-01-28 03:31:32

标签: java selenium

我尝试了很多xpath函数,但是我总是得到一个错误,比如元素不可点击,有人建议应该使用for循环,有人会建议吗?

<dd class="inline">
  <!-- ngRepeat: gender in genderList track by $index --><label class="option ng-scope" data-ng-repeat="gender in genderList track by $index">
     <input name="gender" value="0" data-ng-click="genderChange($index)" type="radio">
     <span class="round"></span>
     <p class="ng-binding">All</p>
  </label><!-- end ngRepeat: gender in genderList track by $index --><label class="option ng-scope" data-ng-repeat="gender in genderList track by $index">
     <input name="gender" value="1" data-ng-click="genderChange($index)" type="radio">
     <span class="round"></span>
     <p class="ng-binding">Male</p>
  </label><!-- end ngRepeat: gender in genderList track by $index --><label class="option ng-scope" data-ng-repeat="gender in genderList track by $index">
     <input name="gender" value="2" data-ng-click="genderChange($index)" type="radio">
     <span class="round"></span>
     <p class="ng-binding">Female</p>
  </label><!-- end ngRepeat: gender in genderList track by $index -->
</dd>

4 个答案:

答案 0 :(得分:1)

你可以试试这个:

IWebElement radioButton = driver.findElement(By.CssSelector(".yourRadioButton"));
radioButton.SendKeys(Keys.Enter);

OR

radioButton.SendKeys(Keys.Space);

有时单选按钮和其他控件不响应:

radioButton.Click();

答案 1 :(得分:0)

您可以使用javascriptexecutor模拟单选按钮

jquery = $x("//dd[@class='inline']/label[0]/input")[0].click()

或者你也可以使用javascript

===============================
Selenium Click会起作用...如果你得到的元素不是可点击的异常,那么可能你的xpath可能是错误的。。 确保在xpath中选择输入标记,就像我上面提到的那样。 因为如果你选择除了像label或dd之类的输入之外的任何其他标签,你将获得元素不可点击的异常

你可以张贴你的xpath吗?

答案 2 :(得分:0)

这听起来像是一个等待问题。有时WebDriver在执行命令时速度太快,并且可能该元素尚未完全加载到DOM中以进行单击。

要隔离问题,请尝试在Click操作之前使用Thread.Sleep。如果等待是问题,那么尝试使用WebDriverWait

答案 3 :(得分:0)

使用此:

JavaScriptExecutor js = driver;
js.executeScript("document.findElementById('**idOfTheRadioButton**').click");