2014-01-08 3 views
-1

У меня есть выпадающий список с несколькими вариантами.Как отобразить текст опции с определенным атрибутом?

<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")); 

ответ

1

Используйте CSS, чтобы просто найти <option> и вернуть текст.

String textValue = driver.findElement(By.cssSelector("select[id^='ct100'][id$='response'] option[selected='selected']")).getText(); 
// textValue = "Please Select..." now 

Кроме того, если вы новичок в селене с помощью Java, я мог заинтересовать вас в Getting Started with Selenium рамках. Это проверенная структура, которую я использовал и включил в корпоративные системы.

Чтобы напечатать текст всех элементов, которые имеют что selected атрибут .. сделать:

for (WebElement option : driver.findElements(By.cssSelector("select[id^='ct100'][id$='response'] option[selected='selected']"))) 
    System.out.println(option.getText()); 
+0

Спасибо. Это сработало. Есть ли способ сделать это без добавления опции [selected = 'selected'] в CSS? Я хочу создать метод, который я могу использовать для всех выпадающих меню. У меня будет css выпадающего списка в качестве параметра, а затем ожидаемый текст опции, которая выбрала = 'selected' в качестве другого параметра. Если ожидаемый текст соответствует фактическому тексту, он переходит. – TestRaptor

+0

трюк здесь, чтобы получить ATTRIBUTE. С помощью CSS вы можете найти атрибуты, указав в нашем случае 'element [ATTRIBUTE = 'attributevalue']', мы ищем вариант с атрибутом 'selected'. – sircapsalot

+0

Конечно. Я отредактировал свой ответ. – sircapsalot

Смежные вопросы