繁体   English   中英

单击单选按钮硒

[英]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()因为MrMrs都包含字符串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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM