我尝试了很多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>
答案 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");