我是Selenium webdriver的新手,我正在使用C#来编写脚本。 我有一个字段性别有男性和女性选项,这些选项实际上是单选按钮,但显示为标签。
我尝试了百万种方式来选择它:
但 NONE 从上面开始工作。 性别字段的html如下所示:
<li class="radiobutton-yesno ui-buttonset">
<span class="label">
Gender
<span class="help-icon" data-title="Your gender is a factor in determining your cost.">
</span>
</span>
<input type="radio" id="genderNo_1" name="gender_1" value="Male" class="reqCntrl ui-helper-hidden-accessible">
<label for="genderNo_1" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-left" role="button">
<span class="ui-button-text">Male</span>
</label>
<input type="radio" id="genderYes_1" name="gender_1" value="Female" class="ui-helper-hidden-accessible">
<label for="genderYes_1" class="ui-button ui-widget ui-state-default ui-button-text-only ui-corner-right" role="button">
<span class="ui-button-text">Female</span>
</label>
</li>
&#13;
,页面上的字段显示如下:enter image description here
答案 0 :(得分:0)
<input>
类型可能是通过css / js规则隐藏的。所以你不能点击那些 - Selenium不允许你做一些用户不能做的事情。
@value
属性也属于radiobutton <input>
,因此在选择器中使用该属性将不起作用,因为隐藏了整个元素。
相反,请使用标签下的<label>
或<span>
并与其文字匹配:
//label/span[text()='Female']
//label/span[text()='Male']
“您的性别是决定费用的一个因素。”
答案 1 :(得分:0)
将无线电放入标签内是一种很好的用户体验。尝试更改标记以遵守该规则。之后,您应该可以通过在标签上执行点击操作来选择广播(按照@aneroid显示的方式选择文本标签)。
答案 2 :(得分:0)
你能说出Selenium投掷的错误吗?
您可以尝试使用脚本。
var temp = "var elt = document.getElementById('#myRadioButton'); elt.click();";
driver.executeScript(temp);