[英]Unable to Identify presently the Checked/Selected radio button in a list
我有一個網頁,其中包含一些問題以及可以單選按鈕形式選擇的問題。 如下所示:
我一次只能選擇一個單選按鈕。 但是,我可以隨時更改選擇。
我想在列表中標識當前的Checked / Selected單選按鈕。
以下是進行任何選擇之前的源頁面的html代碼
<div class="ec-question-radios ng-scope"> <!-- ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question21" class="ec-question-radios__input ng-pristine **ng-untouched** ng-valid ng-empty" type="radio" value="1" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question21" aria-invalid="false"/> <span class="ec-question-radios__text ng-binding"> It wouldn't have an impact on my standard of living and I wouldn't need to use any additional resources (for example, savings) as a result. </span> </label> </div> <!-- end ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question22" class="ec-question-radios__input ng-pristine **ng-untouched** ng-valid ng-empty" type="radio" value="2" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question22" aria-invalid="false"/> <span class="ec-question-radios__text ng-binding"> I have other resources I could fall back on. </span> </label> </div>
我也找到了一種解決方案,在進行任何選擇后,輸入選項卡中的ng-untouched類名稱將更改為ng-touched 。 但是,當我將選擇從選項1更改為選項2或3或列表中的任何選項時,選項1中的類名仍然保持ng-touched 。 並假設我將選擇項從選項1更改為2,則輸入標簽的類名更改為ng-touched 。
如下html片段所示。
<div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question21" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="1" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question21" aria-invalid="false"/> <span class="ec-question-radios__text ng-binding"> It wouldn't have an impact on my standard of living and I wouldn't need to use any additional resources (for example, savings) as a result. </span> </label> </div> <!-- end ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question22" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="2" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question22" aria-invalid="false"/> <span class="ec-question-radios__text ng-binding"> I have other resources I could fall back on. </span> </label> </div> <!-- end ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question23" class="ec-question-radios__input ng-pristine ng-untouched ng-valid ng-not-empty" type="radio" value="3" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question23" aria-invalid="false"/> <span class="ec-question-radios__text ng-binding"> It would have an impact on my immediate standard of living. </span> </label> </div>
我無法以任何獨特的方式來識別當前選擇的單選按鈕。 任何人都可以在這里幫助我嗎?
您要查找的是isSelected
,如果當前已選擇/選中輸入(復選框/單選按鈕),則返回True
。
我不確定該代碼是否完全正確,因為我不是Java
編碼器,但可能看起來像:
for(int i=0; i<=3; i++)
{
if ( driver.findElements(By.xpath("//input[starts-with(@id, 'ec-portfolio-planner-default-questionnaire-question')]")).get(i).isSelected() )
{
WebElement selected_element = driver.findElements(By.xpath("//input[starts-with(@id, 'ec-portfolio-planner-default-questionnaire-question')]")).get(i);
}
}
如果您可以對所有單選按鈕使用通用屬性ID或類,則更好。 然后首先獲取所有單選按鈕的列表,然后可以檢查是選中還是取消選中了哪個
假設您的所有單選按鈕都具有通用id =問題
List<WebElement> allRadiobtn = driver.findElements(By.id("question"));
int iSize = allRadiobtn.size();
boolean bValue = false;
for(int i=0; i < iSize ; i++ ){
bValue = allRadiobtn.get(i).isSelected();
if(bValue == true){
// do some action
}
}
<script>
function add_class(value_check){
if(value_check == "1"){
var d = document.getElementById("ec-portfolio-planner-default-questionnaire-question21");
d.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched");
}
else if(value_check == "2"){
var d1 = document.getElementById("ec-portfolio-planner-default-questionnaire-question22");
d1.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched");
}
else if(value_check == "3"){
var d2 = document.getElementById("ec-portfolio-planner-default-questionnaire-question23");
d2.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched");
}
}
</script>
<div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0">
<label class="ec-question-radios__label">
<input id="ec-portfolio-planner-default-questionnaire-question21" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="1" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('1');"/>
<span class="ec-question-radios__text ng-binding"> It wouldn't have an impact on my standard of living and I wouldn't need to use any additional resources (for example, savings) as a result. </span>
</label>
</div>
<!-- end ngRepeat: option in settings.get('options') -->
<div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0">
<label class="ec-question-radios__label">
<input id="ec-portfolio-planner-default-questionnaire-question22" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="2" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('2');"/>
<span class="ec-question-radios__text ng-binding"> I have other resources I could fall back on. </span>
</label>
</div>
<!-- end ngRepeat: option in settings.get('options') -->
<div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0">
<label class="ec-question-radios__label">
<input id="ec-portfolio-planner-default-questionnaire-question23" class="ec-question-radios__input ng-pristine ng-untouched ng-valid ng-not-empty" type="radio" value="3" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('3');"/>
<span class="ec-question-radios__text ng-binding"> It would have an impact on my immediate standard of living. </span>
</label>
</div>
<script>
function add_class(value_check){
if(value_check == "1"){
var d = document.getElementById("ec-portfolio-planner-default-questionnaire-question21");
d.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched");
}
else if(value_check == "2"){
var d1 = document.getElementById("ec-portfolio-planner-default-questionnaire-question22");
d1.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched");
}
else if(value_check == "3"){
var d2 = document.getElementById("ec-portfolio-planner-default-questionnaire-question23");
d2.classList.add("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched");
document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched");
}
}
</script>
function add_class(value_check){ if(value_check == "1"){ var d = document.getElementById("ec-portfolio-planner-default-questionnaire-question21"); d.classList.add("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched"); } else if(value_check == "2"){ var d1 = document.getElementById("ec-portfolio-planner-default-questionnaire-question22"); d1.classList.add("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question23").classList.remove("ng-untouched"); } else if(value_check == "3"){ var d2 = document.getElementById("ec-portfolio-planner-default-questionnaire-question23"); d2.classList.add("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question21").classList.remove("ng-untouched"); document.getElementById("ec-portfolio-planner-default-questionnaire-question22").classList.remove("ng-untouched"); } }
<div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question21" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="1" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('1');"/> <span class="ec-question-radios__text ng-binding"> It wouldn't have an impact on my standard of living and I wouldn't need to use any additional resources (for example, savings) as a result. </span> </label> </div> <!-- end ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question22" class="ec-question-radios__input ng-pristine ng-valid ng-not-empty ng-touched" type="radio" value="2" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('2');"/> <span class="ec-question-radios__text ng-binding"> I have other resources I could fall back on. </span> </label> </div> <!-- end ngRepeat: option in settings.get('options') --> <div class="ec-question-radios__radio ng-scope" data-ng-click="setValue(option.id)" data-ng-repeat="option in settings.get('options')" role="button" tabindex="0"> <label class="ec-question-radios__label"> <input id="ec-portfolio-planner-default-questionnaire-question23" class="ec-question-radios__input ng-pristine ng-untouched ng-valid ng-not-empty" type="radio" value="3" data-ng-model="$parent.ngModel" name="ec-portfolio-planner-default-questionnaire-question" aria-invalid="false" onclick="add_class('3');"/> <span class="ec-question-radios__text ng-binding"> It would have an impact on my immediate standard of living. </span> </label> </div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.