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

Фотография

Select объект из листа Drop Box


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

#1 Vikonder

Vikonder

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

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

Отправлено 19 мая 2018 - 16:21

Камрады!

 

Среда: Firefox, Selenium WebDriver, TestNG

 

Такая вот задача - выбрать из выпадющего Drop Box определенную строчку  (byValue или byVisibleText)

Вроде как метод полно, но вот в чем проблема - код FE не влючает в себя опции select, а основан на div, span....

<div class="option ui-select-choices-row-inner" data-selectable="" uis-transclude-append="">
      <span class="ng-binding ng-scope" ng-bind-html="function.name | highlight: $select.search">pdu vertical</span>
</div>

Прикрепленный файл  Capture.JPG   13,79К   0 Количество загрузок:

 

и xpath определен для этих 2-х объектов (Function and Model) как:

public static final By ELEVATION_DEVICE_FUNCTION = By.xpath("//div[contains(@ng-model,'deviceModel.function')]");
public static final By ELEVATION_DEVICE_MODEL = By.xpath("//div[contains(@ng-model,'deviceModelFE.deviceModel')]");

Код выглядит вот так:


@Step(description = "Select function and model")
public void selectFunctionAndModel(String pduFunction, String pduModel)    {

    driver.findElement(ElevationElements.ELEVATION_DEVICE_FUNCTION).click();  //нажать на комбо
    WebElement elementFunctionFromList = driver.findElement(ElevationElements.ELEVATION_DEVICE_FUNCTION);
    Select elementFunction = new Select(elementFunctionFromList);  
    elementFunction.selectByVisibleText(pduFunction);   //выбрать элемент
 
}

или для глобальной функции для универсального использования метода

@Step(description = "select element from drop down list by value")
public void selectElementFromDropBox(WebDriver driver, By elementComboBox, String value) {
    waitForElementToBeVisible(elementComboBox);
    Select elementFromList = new Select(driver.findElement(elementComboBox));
    elementFromList.selectByVisibleText(value);
}

Всё выглядит довольно неплохо, но вся загвоздка в ошибке исполнения:

[18:30:28.888] ** STEP: Select Function And Model [Select function and model]

[18:30:28.888] ** STEP: Wait For Element To Be Visible

org.openqa.selenium.support.ui.UnexpectedTagNameException: Element should have been "select" but was "div"

Build info: version: '3.4.0', revision: 'unknown', time: 'unknown'

System info: host: 'ISRTLVM609', ip: '135.70.231.187', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_151'

Driver info: driver.version: unknown

как победить эту ситуацию???


  • 0

#2 TatyanaV

TatyanaV

    Опытный участник

  • Members
  • PipPipPipPip
  • 388 сообщений
  • ФИО:Воробьева Татьяна


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

Ошибку с селектом никак не победить, Select работает только с тэгом select. С указанным кодом страницы Select Вам в принципе никак не подойдет.

 

А про первый вариант - возможно Вы указали не тот кусочек кода страницы, потому что по-моему указанные Вами локаторы приведенному куску кода страницы никак не соответствуют (тэга ng-model я там не вижу).

 

При правильных локаторах:

1. Клик по полю / кнопке (после которого у вас появляется выпадающий список).

2. Ожидание появления нужного элемента списка (т.е. того значения, которое Вам нужно выбрать.

3. Клик по этому элементу.

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


  • 0

#3 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 21 мая 2018 - 11:24

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


  • 0


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

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