Выбор нескольких опций в списке выбора со смещением - PullRequest
1 голос
/ 28 октября 2011

У меня HMTL вот так:

<select multiple="multiple">
  <option value="volvo">Volvo</option>
  <option value="saab">Saab</option>
  <option value="mercedes">Mercedes</option>
  <option value="audi">Audi</option>
</select>

Я бы хотел выбрать все варианты, нажав первый, удерживая Shift и нажав последний:

browser.select.select "Volvo"
browser.select.send_keys :shift
browser.select.select "Audi"

Но простопервый и последний выбран.

browser.select.selected_options
 => ["Volvo", "Audi"]

Я что-то не так делаю?

Среда: Mac OS X 10.6.8, Firefox 7.0.1, ruby ​​1.9.2p290, селен-webdriver 2.10.0, watir-webdriver 0.3.5.

Ответы [ 3 ]

1 голос
/ 28 октября 2011

Не знаю, почему не работает смена, но есть очень простой способ добиться того, чего вы хотите:

browser.select_list.options.each { |option| option.select }

Вы можете сначала очистить список, если он уже выбран:

browser.select_list.clear
browser.select_list.options.each { |option| option.select }
0 голосов
/ 03 ноября 2011

Что касается Watir-Webdriver, я спросил об этом Яри (основной движущей силы Watir-Webdriver) и получил следующий ответ, который может дать вам путь, если вам это нужно достаточно сильно

В watir-webdriver (пока) ничего нет, но вы должны быть в состоянии сделать это с помощью API действий в WebDriver (см. http://rubydoc.info/gems/selenium-webdriver/2.10.0/Selenium/WebDriver/ActionBuilder). Я не уверен, насколько хорошо это поддерживается в разных браузерах - но из Тесты Java (которые являются самыми обширными), похоже, что в настоящее время поддерживается только в Firefox + Linux:

http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/interactions/CombinedInputActionsTest.java#50

Я также создал feature-request в проекте Watir-Webdriver на Github. Если это то, что вам нужно, вы можете прокомментировать его, чтобы сообщить о своих потребностях.

0 голосов
/ 28 октября 2011

Я недостаточно знаком с sendkeys, чтобы быть уверенным в этом, но я представляю, что он говорит: shift keyDown, за которым сразу следует shift keyUp, так что у вас нет времени нажимать дособытие keyUp.Если, конечно, токен: shift не делает ничего особенного.Как я и сказал, я совсем не знаком с ним.

В списке ключей отправки (не в частности, веб-драйвере) перечислены

Send("{a down}") ;Holds the A key down

Send("{a up}") ;Releases the A key

как способ единственного запуска этих событий (т.е. имитация удерживаемой клавиши).

Возможно, watir-webdriver имеет аналогичную функциональность?1019 * Стоит выстрел.

...