[英]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()
因為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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.