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

Selenium WebDriver: полное руководство
онлайн, начало 19 октября
Логи как инструмент тестировщика
онлайн, начало 22 октября
Школа для начинающих тестировщиков
онлайн, начало 22 октября
Тестирование REST API
онлайн, начало 22 октября
Фотография

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


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

#1 Vikonder

Vikonder

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

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

Отправлено 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
  • 315 сообщений
  • ФИО:Воробьева Татьяна


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

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

 

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

 

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

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

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

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

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


  • 0

#3 Lzk

Lzk

    Специалист

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

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

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


  • 0


Selenium 2.0: стартовый уровень
онлайн, начало 9 ноября
Программирование на Java для тестировщиков
онлайн, начало 16 ноября
Автоматизация функционального тестирования
онлайн, начало 9 ноября
Selenium WebDriver: полное руководство
онлайн, начало 19 октября



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

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

Яндекс.Метрика
Реклама на портале