У меня есть выпадающий список с несколькими вариантами.Как отобразить текст опции с определенным атрибутом?
<select id="ctl00_cphMainContent_dq16_response" name="ctl00$cphMainContent$dq16$response">
<option value="0" selected="selected">Please Select...</option>
<option value="282">Technology Architecture</option>
<option value="281">The Avengers</option>
<option value="280">Human Resources</option>
<option value="279">R&D</option>
<option value="278">Quality Services</option>
<option value="277">Publishing</option>
<option value="275">Product Development</option>
<option value="284">MI6 - British Secret Service</option>
<option value="285">Finance</option>
<option value="276">Public Relations</option>
<option value="283">Client Services</option>
</select>
Для моих автоматизированных тестов у меня есть класс, в котором я создаю объекты. Поэтому для всех моих выпадающих списков у меня есть объект. Вот объект, который я создал для выпадающего списка выше.
public static final String Basic7_Dropdown = "css=select#ctl00_cphMainContent_dq16_response";
Этот объект используется другими методами для проверки раскрывающегося списка. Например, у меня есть метод, в котором я хочу проверить все доступные параметры в раскрывающемся списке.
protected void verifyDropDownValues(String selector, String expectedvalue) {
List<String> listA = new ArrayList<String>();
listA.add(expectedvalue);
List<String> listB = new ArrayList<String>();
List<Element> options = driver.getElements(selector);
for(Element opt : options){
String actualtext = opt.getText();
listB.add(actualtext);
}
Assert.assertEquals(listB, listA);
}
Когда я использую этот метод в моих тестах, параметр селектора объект Basic7_Dropdown, который я создал.
verifyDropDownValues(AppObjects.Basic7_Dropdown, "Please Select...\nTechnology Architecture\nThe Avengers\nHuman Resources\nR&D\nQuality Services\nPublishing\nProduct Development\nMI6 - British Secret Service\nFinance\nPublic Relations\nClient Services");
Используя один и тот же объект Basic7_Dropdown, который я создал, как я могу создать метод, который будет найти тот вариант, который имеет атрибут из отборных = «выбрано», а затем отобразить этот текст.
Я попробовал код ниже, надеясь вернуть его, чтобы вернуть выбранное значение «Пожалуйста, выберите ...». Однако он не возвращает никаких параметров.
List<Element> options = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options){
if (opt.getAttribute("selected") != null) {
String actualtext = opt.getText();
System.out.println(actualtext);
}
}
Я не считаю, что мой список получает все варианты. Когда я запускаю приведенный ниже код, он печатает только «null».
List<Element> options6 = driver.getElements(AppObjects.Basic1_Dropdown);
for(Element opt : options6){
System.out.println(opt.getAttribute("selected"));
Спасибо. Это сработало. Есть ли способ сделать это без добавления опции [selected = 'selected'] в CSS? Я хочу создать метод, который я могу использовать для всех выпадающих меню. У меня будет css выпадающего списка в качестве параметра, а затем ожидаемый текст опции, которая выбрала = 'selected' в качестве другого параметра. Если ожидаемый текст соответствует фактическому тексту, он переходит. – TestRaptor
трюк здесь, чтобы получить ATTRIBUTE. С помощью CSS вы можете найти атрибуты, указав в нашем случае 'element [ATTRIBUTE = 'attributevalue']', мы ищем вариант с атрибутом 'selected'. – sircapsalot
Конечно. Я отредактировал свой ответ. – sircapsalot