一直试图点击一个单选按钮在网站上,但没有效果。
<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>
一直试图点击单选按钮和标签,但selenium一直抛出没有这样的元素错误,我在这个阶段有点沮丧。
在实际网站上可能更容易看到:
https://www.theaa.ie/car-insurance/journey/getting-started
它在输入电子邮件后出现在页面上。试图得到一些测试用例,但这些单选按钮不想被点击。
发布于 2018-05-23 19:40:47
在这种情况下,我将使用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");发布于 2018-05-23 16:24:13
查看html结构:

您可以等待id "title"的web元素的出现,然后找到类名为的所有元素。
一旦你有了所有的,你可以检查文本和点击感兴趣的一个。
因此,例如,如果您想单击"Mr":
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();
}
}https://stackoverflow.com/questions/50492493
复制相似问题