簡體   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