C# - Selenium Webdriver,无法选择radiobutton作为标签显示在它上面

时间:2016-06-29 09:30:30

标签: selenium selenium-webdriver selenium-chromedriver

我是Selenium webdriver的新手,我正在使用C#来编写脚本。 我有一个字段性别有男性和女性选项,这些选项实际上是单选按钮,但显示为标签。

我尝试了百万种方式来选择它:

  1. driver.FindElement(By.CssSelector(" [值='女']&#34))。单击();
  2. driver.FindElement(By.XPath(" //输入[含有(@value,'男性']"))点击();
  3. driver.FindElement(By.CssSelector("输入[类型='无线电'] [值='男性']&#34))。单击() ;
  4. driver.FindElement(By.XPath(" //输入[@value ='女']"))。点击();
  5. 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;
    &#13;
    &#13;

    ,页面上的字段显示如下:enter image description here

3 个答案:

答案 0 :(得分:0)

<input>类型可能是通过css / js规则隐藏的。所以你不能点击那些 - Selenium不允许你做一些用户不能做的事情。

@value属性也属于radiobutton <input>,因此在选择器中使用该属性将不起作用,因为隐藏了整个元素。

相反,请使用标签下的<label><span>并与其文字匹配:

  1. //label/span[text()='Female']
  2. //label/span[text()='Male']
  3. PS:这个问题的性质有点令人担忧:

      

    “您的性别是决定费用的一个因素。”

答案 1 :(得分:0)

将无线电放入标签内是一种很好的用户体验。尝试更改标记以遵守该规则。之后,您应该可以通过在标签上执行点击操作来选择广播(按照@aneroid显示的方式选择文本标签)。

答案 2 :(得分:0)

你能说出Selenium投掷的错误吗?

您可以尝试使用脚本。

var temp = "var elt = document.getElementById('#myRadioButton'); elt.click();";
driver.executeScript(temp);