一直试图点击网站上的单选按钮无济于事。
<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;
一直试图点击单选按钮和标签,但selenium不断抛出没有这样的元素错误,我在这个阶段有点沮丧。
在实际网站上可能更容易看到:
https://www.theaa.ie/car-insurance/journey/getting-started
在输入电子邮件后在页面上。试图让一些测试用例继续进行,但这些单选按钮不想被点击。
答案 0 :(得分:1)
看一下html结构:
您可以等待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()
,因为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");