2

私はこのような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"

ただし、最初と最後の 1 つだけが選択されます。

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

私は何か間違ったことをしていますか?

環境: Mac OS X 10.6.8、Firefox 7.0.1、ruby 1.9.2p290、selenium-webdriver 2.10.0、watir-webdriver 0.3.5。

4

3 に答える 3

1

シフトが機能しない理由はわかりませんが、目的を達成するための非常に簡単な方法があります。

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

すでに選択されている場合は、最初にリストをクリアすることをお勧めします。

browser.select_list.clear
browser.select_list.options.each { |option| option.select }
于 2011-10-28T10:56:03.840 に答える
0

Watir-Webdriver に関して、私は Jari (Watir-webdriver の主な原動力) にこれについて尋ねたところ、次の回答を得ました。

(まだ) watir-webdriver で公開されているものは何もありませんが、WebDriver のアクション API を使用して実行できるはずです ( 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

また、Github の Watir-Webdriver プロジェクトで機能要求を作成しました。これが必要な場合は、コメントしてニーズを知らせてください。

于 2011-11-03T16:38:17.780 に答える
0

私はこれについて確信を持てるほどsendkeysに精通していませんが、それが何をしているのか想像できます: keyUp イベントの前にクリックする時間がないように、shift keyDownすぐに. shift keyUpもちろん、:shift トークンが何か特別なことをしている場合を除きます。私が言ったように、私はそれに精通していません。

送信キー リスト (具体的には Web ドライバーではない) のリスト

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

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

これらのイベントを個別に発生させる方法として (つまり、キーが押されていることをシミュレートします)。

おそらくwatir-webdriverにも同様の機能がありますか?

browser.element.sendkeys [:shift down]

試してみる価値。

于 2011-10-28T16:33:24.080 に答える