单击单选按钮Selenium

时间:2018-05-23 15:42:03

标签: java selenium selenium-webdriver

一直试图点击网站上的单选按钮无济于事。



<df-radio-group class="o-flex o-flex--distribute df-question ng-tns-c33-15 ng-has-value ng-touched ng-dirty ng-valid" aria-label="Title" id="title" aria-labelledby="title" role="radiogroup" style="float: left; width: 100%;">
			<!----><df-radio _nghost-c40="" class="ng-tns-c33-15 is-checked" id="md-radio-93fd918"><label _ngcontent-c40="" class="df-radio-label" for="md-radio-93fd918-input">
  <input _ngcontent-c40="" class="df-radio-input visually-hidden" type="radio" id="md-radio-93fd918-input" name="df-radio-group-0">
  <div _ngcontent-c40="" class="md-radio-label-content">
    
				Mr
			
  </div>
</label></df-radio><df-radio _nghost-c40="" class="ng-tns-c33-15" id="md-radio-bd05b81"><label _ngcontent-c40="" class="df-radio-label" for="md-radio-bd05b81-input">
  <input _ngcontent-c40="" class="df-radio-input visually-hidden" type="radio" id="md-radio-bd05b81-input" name="df-radio-group-0">
  <div _ngcontent-c40="" class="md-radio-label-content">
    
				Mrs
			
  </div>
</label></df-radio><df-radio _nghost-c40="" class="ng-tns-c33-15" id="md-radio-ba9f195"><label _ngcontent-c40="" class="df-radio-label" for="md-radio-ba9f195-input">
  <input _ngcontent-c40="" class="df-radio-input visually-hidden" type="radio" id="md-radio-ba9f195-input" name="df-radio-group-0">
  <div _ngcontent-c40="" class="md-radio-label-content">
    
				Miss
			
  </div>
</label></df-radio><df-radio _nghost-c40="" class="ng-tns-c33-15" id="md-radio-ec973a5"><label _ngcontent-c40="" class="df-radio-label" for="md-radio-ec973a5-input">
  <input _ngcontent-c40="" class="df-radio-input visually-hidden" type="radio" id="md-radio-ec973a5-input" name="df-radio-group-0">
  <div _ngcontent-c40="" class="md-radio-label-content">
    
				Ms
			
  </div>
</label></df-radio>
		</df-radio-group>
&#13;
&#13;
&#13;

一直试图点击单选按钮和标签,但selenium不断抛出没有这样的元素错误,我在这个阶段有点沮丧。

在实际网站上可能更容易看到:

https://www.theaa.ie/car-insurance/journey/getting-started

在输入电子邮件后在页面上。试图让一些测试用例继续进行,但这些单选按钮不想被点击。

2 个答案:

答案 0 :(得分:1)

看一下html结构:

enter image description here

您可以等待ID为“title”的网络元素,然后找到所有类别为“ md-radio-label-content ”的元素。

完成所有这些操作后,您可以查看文本并单击感兴趣的文本。

所以,例如,如果你想点击“先生”:

WebElement titleRadiogroup = (new WebDriverWait(driver, 10))
                .until(ExpectedConditions.presenceOfElementLocated(By.id("title")));


        List<WebElement> ele= titleRadiogroup.findElements(By.className("md-radio-label-content"));

        for (WebElement el : ele)
        {
            if(el.getText().equalsIgnoreCase("Mr"))
            {
                el.click();
            }
        }

答案 1 :(得分:-1)

在这种情况下,我会使用XPath按其内容单击元素。您遇到的一个问题是,包含标题的这些DIV充满了空白(见下文)。

<div _ngcontent-c40="" class="md-radio-label-content">

            Mr

</div>

因此,我们不能做像

这样简单的事情
//div[.='Mr']

另一个问题是您无法使用contains(),因为MrMrs都包含字符串Mr。我们可以通过使用修剪空格的normalize-space()来避免整个事情。

//div[normalize-space(.)='Mr']

如果是我,我会把它包装在一个函数中,因为你可能会重复使用它。

public void selectTitle(String title)
{
    driver.findElement(By.xpath("//div[normalize-space(.)='" + title + "']")).click();
}

并将其称为

selectTitle("Miss");
相关问题