Перейти к содержимому

Фотография

Выбор элемента из ComboBox


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Vikonder

Vikonder

    Новый участник

  • Members
  • Pip
  • 31 сообщений

Отправлено 02 мая 2018 - 09:53

Камрады!

 

Пытаюсь использовать следующий метод выбора из ComboBox

    @Step(description = "select from combo list")
    public void selectFunctionFromList(By element) {
        List<WebElement> FunctionList = driver.findElements(element);
        if (FunctionList.size() > 0) {
            for (int i = 10; i < FunctionList.size(); i++) {
                Utilities.ElementdrawBorder(driver, element);
                FunctionList.get(i).click();
                logger.info("-------------------->  device is selected");
                break;
            }
        }
    }

где element метод получает в формате By.xpath("//*[contains(@class,'ui-select-choices')]")

При нормальном игдексе = 1 ничего из списка не выбирается...

Хотелось бы понять, почему индекс i=10 выбирает 1 элемент из списка?

 

Метода должна работать, как универсальная, так ComboBox имеет структуру домино и выбор одного устройства открывает другие ComboBox  (получается подобие графа)

 

Прикрепленный файл  SH_20 May. 02 09.04.jpg   24,26К   0 Количество загрузок:

 

Задача стоит, используя этот метод выбирать элементы 

 

FE code

 

<div ng-show="$select.open" class="ui-select-choices ui-select-dropdown selectize-dropdown ng-scope single" ng-class="{'single': !$select.multiple, 'multi': $select.multiple}" repeat="function in optionalFunction | filter: $select.search" style="opacity: 1;"><div class="ui-select-choices-content selectize-dropdown-content"><div class="ui-select-choices-group optgroup"><div ng-show="$select.isGrouped" class="ui-select-choices-group-label optgroup-header ng-binding ng-hide" ng-bind="$group.name"></div><!-- ngRepeat: function in $select.items --><!-- ngIf: $select.open --><div role="option" class="ui-select-choices-row ng-scope active" ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}" ng-repeat="function in $select.items" ng-if="$select.open" ng-click="$select.select(function,$select.skipFocusser,$event)" style=""><div class="option ui-select-choices-row-inner" data-selectable="" uis-transclude-append="">

                  <span ng-bind-html="function.name | highlight: $select.search" class="ng-binding ng-scope">10g server sfp</span>
                </div></div><!-- end ngIf: $select.open --><!-- end ngRepeat: function in $select.items --><!-- ngIf: $select.open --><div role="option" class="ui-select-choices-row ng-scope" ng-class="{active: $select.isActive(this), disabled: $select.isDisabled(this)}" ng-repeat="function in $select.items" ng-if="$select.open" ng-click="$select.select(function,$select.skipFocusser,$event)" style=""><div class="option ui-select-choices-row-inner" data-selectable="" uis-transclude-append="">
....

 


  • 0

#2 MissLeman

MissLeman

    Постоянный участник

  • Members
  • PipPipPip
  • 152 сообщений


Отправлено 02 мая 2018 - 13:22

Ну, возможно, по данному локатору находятся не только элементы списка, но и какие-то другие элементы, не кликабельные. Попробуйте вывести куда-нибудь в консоль FunctionList.size(), может станет понятнее. Или локатор переписать на более прицельный.


  • 0

#3 Vikonder

Vikonder

    Новый участник

  • Members
  • Pip
  • 31 сообщений

Отправлено 05 мая 2018 - 09:28

спасибо, разобрался...

HTML при построении UI автоматически сортирует списки, которые получает из DB.

Поэтому, список ComboBox приходит отсортированным, по внутреннему алгоритму  индекасации.

Как результат, список котрый выпадает не линейный и имеет индексы до сортировки.


  • 1


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных