<後日追記>
解決しました。
Selenium 2 (WebDriver) でinput項目に半角カナを入力する
以下元記事
--------
テスト自動化を本気でやらねばと思って、Selenium 2 (Selenium WebDriver) の検証をはじめてみました。
@ITの記事(iPhone/Android含むブラウザ自動テストの最終兵器Selenium WebDriverとは)を参考にインストールして、「ブラウザ勝手に起動したすげー」「画面勝手に操作してくれるすげー!」「スクリーンショット自動でとれるすげー!!」って無邪気に感動していたのですが、一瞬で壁にぶち当たりました。
テスト対象Webページのinput項目(テキストボックス)にどうやって日本語入力すればいいの??
WebDriver.sendKeys() はメソッド名のとおり、キーシーケンスを送るだけなので日本語は送れません。
つまりこれ↓はダメ。
driver.findElement(By.id("foo")).sendKey("テキスト入力");
ググってみてもなぜか同じ悩みを持つ人が見つからなかったので、ええい、ということで「Webdriver.get() メソッドにjavascriptスキームを渡して、JavaScriptを無理やり送る(いわゆるブックマークレット)」という無茶な方法を思い立って、試してみました。
つまりこう。
driver.get("javascript:(function(){document.getElementById('foo').value='テキスト入力'})();"); // jQueryが入ってるページならこれ↓でも。 driver.get("javascript:(function(){$('#foo').val('テキスト入力')})();");
思いの外ちゃんといける。
こんな感じで↓メソッド化して、、、
protected void inputTextById(WebDriver driver, String id, String inputText) { driver.get("javascript:(function(){$('input[type=text]#" + selector + "').val('"+ inputText + "')})();"); }
よしおk!
ってほんとにいいのかな??この方法、これはこれで色々応用できそうなのでいいですが、日本語入力については、もっとちゃんとしたやり方があるような気が・・・。うーむ。
<30分後追記>
と思って改めて調べてたら、クリップボードを経由する方法があるみたい。明日試してみよう。