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

Фотография

Выбор элемента в Combobox


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

#1 Lace

Lace

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

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

Отправлено 25 марта 2013 - 07:44

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

Есть список счетов, который на странице отображается в виде Combobox. Задача - выбрать первый из счетов в комбобоксе и сделать по нему клик.
Гугл как-то не помог разобраться. В документации и примерах описывается как создать комбобокс, а не как кликать по элементу. Я работаю WebDriver + Java

Ткните, плс, где можно почитать именно на эту тему или пример кода... На тестируемой странице много комбобоксов и необходимо научится с ними работать
  • 0

#2 soleksenko2702

soleksenko2702

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

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 25 марта 2013 - 11:58

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

Есть список счетов, который на странице отображается в виде Combobox. Задача - выбрать первый из счетов в комбобоксе и сделать по нему клик.
Гугл как-то не помог разобраться. В документации и примерах описывается как создать комбобокс, а не как кликать по элементу. Я работаю WebDriver + Java

Ткните, плс, где можно почитать именно на эту тему или пример кода... На тестируемой странице много комбобоксов и необходимо научится с ними работать


Есть например такой комбобокс:
<select id="superior" size="1" name="superior">
<option value=""></option>
<option value="c.i.e.m.md.Division_1">DIVISION007</option>
<option selected="selected" value="c.i.e.m.md.Division_$$_javassist_162_119">MyDivision</option>
<option value="c.i.e.m.md.Division_121">MyDivision4</option>
<option value="c.i.e.m.md.Division_122">MyDivision5</option>
</select>

Тогда для получить доступ к элементу MyDivision4 можно так:
//select[@id='superior']/option[text()='MyDivision4']

new Select(driver.findElement(By.id("superior"))).selectByVisibleText("MyDivision4");
  • 0

#3 PunkLiner

PunkLiner

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

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


Отправлено 26 марта 2013 - 08:31

Почитайте тут: http://bugscatcher.net/archives/350 Обратите внимание на команду select
  • 0

#4 O'Leen

O'Leen

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

  • Members
  • Pip
  • 55 сообщений
  • Город:Киев

Отправлено 26 марта 2013 - 11:17

Если не важен текст, который нужно выбирать в комбике, то первый элемент комбобокса с id = 'someid' можно выбрать так:
driver.findElement(By.id("someid")).sendKeys(Keys.ARROW_DOWN);

  • 0

#5 Lace

Lace

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

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

Отправлено 26 марта 2013 - 11:18

Спасибо огромное за линк - очень полезная информация, особенно по select'ам. Именно что-то в таком духе я и искала!

но как выяснилось, мой выпадающий список вовсе не Combobox (и разработчики мне это подтвердили)... Как минимум select'ов там нет... Я так понимаю, что это просто список, оформленный в виде выпадающего листа и как с ним работать я еще больше не представляю. Делать клик по xpath - как я это делаю сейчас - мне совсем не хочется. А хочется написать универсальный метод, в который передавать какие-то значения (индекс или валюту) и в ответ получать клик по нужному элементу.
  • 0

#6 Lace

Lace

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

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

Отправлено 26 марта 2013 - 13:10

В коде дроплист выглядит следующим образом:

<select id="transFrom" style="width: 350px; display: none;" name="transFrom">
<option acc="1111111111111111" value="ABC10000">Account 1 10000</option>
<option acc="123456976" value="ABC347">With Statement 600</option>
<option acc="90000080000" value="EUR908">For corporate 89000</option>
</select>

В идеале я бы хотела получить список всех элементов с индексами (1,2,3) и кликнуть потом по элементу с индексом 1 или 2, например...
  • 0

#7 appmen

appmen

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

  • Members
  • PipPipPipPip
  • 408 сообщений
  • ФИО:Victor

Отправлено 26 марта 2013 - 15:23

В коде дроплист выглядит следующим образом:

<select id="transFrom" style="width: 350px; display: none;" name="transFrom">
<option acc="1111111111111111" value="ABC10000">Account 1 10000</option>
<option acc="123456976" value="ABC347">With Statement 600</option>
<option acc="90000080000" value="EUR908">For corporate 89000</option>
</select>

В идеале я бы хотела получить список всех элементов с индексами (1,2,3) и кликнуть потом по элементу с индексом 1 или 2, например...

а что такое индекс в вашем примере?
  • 0

#8 soleksenko2702

soleksenko2702

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

  • Members
  • PipPipPip
  • 193 сообщений
  • ФИО:Олексенко Сергей

Отправлено 27 марта 2013 - 10:37


В коде дроплист выглядит следующим образом:

<select id="transFrom" style="width: 350px; display: none;" name="transFrom">
<option acc="1111111111111111" value="ABC10000">Account 1 10000</option>
<option acc="123456976" value="ABC347">With Statement 600</option>
<option acc="90000080000" value="EUR908">For corporate 89000</option>
</select>

В идеале я бы хотела получить список всех элементов с индексами (1,2,3) и кликнуть потом по элементу с индексом 1 или 2, например...

а что такое индекс в вашем примере?


Действительно, было бы неплохо знать что у Вас выступает в роли индекса.
И элемент должен быть display: none ?
  • 0

#9 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 27 марта 2013 - 15:18

В коде дроплист выглядит следующим образом:

<select id="transFrom" style="width: 350px; display: none;" name="transFrom">
<option acc="1111111111111111" value="ABC10000">Account 1 10000</option>
<option acc="123456976" value="ABC347">With Statement 600</option>
<option acc="90000080000" value="EUR908">For corporate 89000</option>
</select>

В идеале я бы хотела получить список всех элементов с индексами (1,2,3) и кликнуть потом по элементу с индексом 1 или 2, например...

Начнем сначала. Я не буду писать код выбора, а лишь натолкну на мысль, перечислив основные функции.

1. Есть такой замечательный класс Select:
WebElement selectElement = webDriver.findElements(...);
Select select =  new Select(selectElement)

2. В этом замечательном классе есть куча интересных методов для работы с комбобоксами, или как вы их называете - дроплистами. Например:
select.selectByValue(value); // value - значение атрибута value в option
select.selectByIndex(index); // index - номер элемента option
select.selectByVisibleText(optionText); // optionText - текст элемента, в option
и много других методов, которые могут вам пригодиться...

Надеюсь этого вам хватит, чтобы справиться с поставленной задачей.
  • 0
Алексей Булат
Про Тестинг


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

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