首页
学习
活动
专区
圈层
工具
发布

单击Radio
EN

Stack Overflow用户
提问于 2018-05-23 15:42:02
回答 2查看 1.1K关注 0票数 0

一直试图点击一个单选按钮在网站上,但没有效果。

代码语言:javascript
复制
<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

它在输入电子邮件后出现在页面上。试图得到一些测试用例,但这些单选按钮不想被点击。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-23 19:40:47

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

代码语言:javascript
复制
<div _ngcontent-c40="" class="md-radio-label-content">

            Mr

</div>

正因为如此,我们不能做一些简单的事情

代码语言:javascript
复制
//div[.='Mr']

另一个问题是不能使用contains(),因为MrMrs都包含字符串Mr。我们可以通过使用normalize-space()来避免整件事,因为它减少了空格。

代码语言:javascript
复制
//div[normalize-space(.)='Mr']

如果是我,我会将它封装在一个函数中,因为您可能会重复使用它。

代码语言:javascript
复制
public void selectTitle(String title)
{
    driver.findElement(By.xpath("//div[normalize-space(.)='" + title + "']")).click();
}

把它叫做

代码语言:javascript
复制
selectTitle("Miss");
票数 0
EN

Stack Overflow用户

发布于 2018-05-23 16:24:13

查看html结构:

您可以等待id "title"的web元素的出现,然后找到类名为的所有元素。

一旦你有了所有的,你可以检查文本和点击感兴趣的一个。

因此,例如,如果您想单击"Mr":

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50492493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档