[英]Click Radio Button Selenium
试图单击网站上的单选按钮无济于事。
<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>
一直试图单击单选按钮和标签,但是硒一直没有引发此类元素错误,在这个阶段,我有点沮丧。
在实际的网站上可能更容易看到:
https://www.theaa.ie/car-insurance/journey/getting-started
输入电子邮件后在页面上。 试图进行一些测试用例,但这些单选按钮不希望被单击。
看一下html结构:
您可以等待id为“ title”的web元素的出现,然后找到所有类名为“ 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();
}
}
在这种情况下,我将使用XPath单击元素的内容。 您在这里遇到的一个问题是,这些包含标题的DIV
充满了空格(请参见下文)。
<div _ngcontent-c40="" class="md-radio-label-content">
Mr
</div>
因此,我们不能做简单的事情
//div[.='Mr']
另一个问题是您不能使用contains()
因为Mr
和Mrs
都包含字符串Mr
通过使用修剪空白的normalize-space()
,我们可以避免整个事情。
//div[normalize-space(.)='Mr']
如果是我,我会将其包装在一个函数中,因为您可能会重复使用它。
public void selectTitle(String title)
{
driver.findElement(By.xpath("//div[normalize-space(.)='" + title + "']")).click();
}
并称它为
selectTitle("Miss");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.