2012-11-13 7 views
5

RubyとWatir-Webdriverの新機能です。私はVBScriptで書かれた私たちのサイトの自動化スイートを持っています。私は今Firefoxをサポートしなければならないので、Ruby/Watirに変換したいと思っています。私はRubyが本当に好きで、Watirに取り組んでいますが、Webdriverにログイン画面を表示させようと1週間は過ごしました。Watir-Webdriverはリンク先をJavaScriptで表示しますか?

サイトは「警告画面」と「同意する」領域から始まります。ユーザーが「同意する」をクリックすると、ログイン画面が表示されます。

<body onload="showMessage('true')"><div id="login"><div id="message"><map name="accept"> 

<area href="javascript:showLogin();" shape="rect" coords="280,390,384,432" /> 

</map></div></div></body> 

私は(同じページで、本当に形、ちょうど隠れて)ログイン画面を提示する領域をクリックする必要があります。私は、VBScriptで一日中、この操作を行います。しかし

objExplorer.Document.GetElementsByTagName("area")(0).click 

、ワチール-webdriverを、browser.areaを使用して(:インデックスは、0).clickは何もしません。

puts browser.area(:index, 0).shape 
=>RECT 

puts browser.area(:index, 0).coords 
=>280,390,384,432 

私は、スクリプトが領域要素を「見る」ことができ、その属性を読み取ることができることを知っています。クリックイベントでは何もしません。

私は、hrefの自体にbrowser.gotoを使用する場合:

browser.goto("javascript:showLogin();") 

ログインが見えるようになり、私は要素(ユーザー名とパスワードのテキストフィールドを設定する)と対話することはできません。私は、開発者用ツールウィンドウを開いた状態で(HTMLを表示する)ページを見ています。「ロード中」と表示されます。

これは私が立ち往生している場所です。興味深いことに、私は、ログインフォームの名前を使用して行う場合:

browser.form(:name, "LoginForm").submit 

私は、ユーザー名とパスワードが空白であることを、フォームからのポップアップメッセージが表示されますので、いくつかの相互作用がまだあります。

もちろん、ユーザー名/パスワードを手動で入力すると、「Loading ...」と表示されても、フォームを正常に送信できます。

ブラウザを待つための「when_present.click」とその他のテクニックについて理解しています。これらは機能しません。私のジレンマは、私がそのエリアをクリックすることができないということです.JavaScriptでgotoを使用すると、ブラウザーはWatirのオートメーションを無視します。あなたの助けのための

感謝。 「申し訳ありませんが、WatirまたはWebdriverはこれをしません」という回答も私には受け入れられます。それは私が上に移動し、他のソリューションを探すことができます。コメント欄で質問した後

編集:

申し訳ありませんが、サイトが公開されていないので、私はリンクを投稿することはできません。 Firefoxでの作業については、スクリプトは正常に動作します。 IEに問題があります。コメントは私には思った:私は "...信頼された発行された証明書..."取得する最初のサイトに移動すると、証明書のエラー。 IEで取得した証明書のエラーにより、フォームを表示する前にオートメーションとの接続が切断される可能性がありますか?私は、証明書のエラーを過ぎてクリックして、私はstackoverflowの上でここに来たラインを使用します。

browser.goto("javascript:document.getElementById('overridelink').click()") 

をしかし、今、私は多分これが問題の一部であるかもしれないと思います。私は私のIE(IE 9を使用)オプションに行き、証明書をチェックするためのセキュリティオプションのチェックを外しましたが、無駄です。これにより問題が発生している可能性がある場合は、インフラストラクチャチームと交渉して、新しいサーバーをビルドするたびにダウンロードする証明書を生成する必要があります。

+0

サイトは公開されていますか?それへのリンクが役立ちます。 –

+1

これはサポートされているようです。 Watir-Webdriverを使用して、 'href =" javascript:alert( 'test'); "で領域をクリックすると、警告が期待通りに作成されました。ブラウザの互換性に問題があると思われますか?例えば、 'href =" javascript:alert(); "'(alert()に渡されるパラメータがないことに注意してください)、IEでは、Firefoxでは何もしません。 Firefoxで領域を手動でクリックしても正常に動作しますか? –

答えて

6

[OK]を私は最終的に私の問題:browser.execute_scriptの解決策を見つけた数百のポストと時間のGoogle検索を読んだと思います。

browser.execute_script("showLogin();") 

これは簡単でした。 browser.gotoを使用してページを読み込む際にハングアップし、webdriverがタイムアウトしました。 execute_scriptを使うと完璧に動作します!

+0

ニース!私はこのようなものを探していた。あなたのソリューションを投稿していただきありがとうございます、私は '.execute_script'について知りませんでした。 –

関連する問題