2012-05-04 7 views
4

背景: イントラネットWebアプリケーションの注文入力を自動化するWindows Form Appを作成しています。私たちには大量の注文入力があり、それは私たちに多額の費用をかけるので、私は仕事を自動化するために礼儀正しく働きました。C#Webbrowser Automation

問題: webbrowserクラスを使用してWebアプリケーションをナビゲートしています。私は非常に遠くに行きましたが、道路ブロックに達しました。アプリケーションには、Webダイアログページを開く部分があります。どのようにWebダイアログと対話するのですか? webbrowserクラスのインスタンスにはまだ親ページがあります。私は誰かが正しい方向に私を向けることを望んでいる。

+0

ypuは、おそらく優れているこれらの注文フォーム、単純なHTTP POSTの一度 –

+3

でWebサーバに完全な形で、最終的な要求を投稿するWebクライアントを使用することができます、またはあなたがにAJAXifiedクエリを待つ必要があります戻りますか? – user7116

答えて

4

あなたが必要とする複雑さのレベルの応じて、2つの選択肢があります:POSTデータにあなたを見つけるためにFiddlerのようなHTTPデバッガを使用 各ページに送信し、HttpWebRequestを経由して、それを模倣する必要

  1. を。
  2. SeleniumのようなBrowser Automation Toolを使用してください。

注:あなたの行動はとてもIPブロックの準備ができているウェブサイトがスパムとみなすことができる、CAPTCHA ...

0

あなたはセレンに行くを与えることができる:http://seleniumhq.org/ UIオートメーションは、はるかに直感的なアプローチでありますこれらのタイプのタスクに

4

多くのオプションがあります。 WebBrowserコントロールを使用して

はそれを行う...他人からの回答に拡大し、新しいアイデアを追加するには:これは、いずれかの注入 demonstrated hereとしてターゲットページにjavascriptやJavaScriptオブジェクトを作成し、それを使用することにより、技術的には可能です webbrowser.objectforscriptingプロパティを介してブリッジとして。これは非常に壊れやすいものです。要素のIDを変更するWebサイトが簡単に破損する可能性があります。また、コードがフォームの機能に干渉しないようにする必要があります(関数名などの衝突)

ポストバックを使用して実行します。 Webブラウザとサーバー間の通信を監視します(私は個人的にはFirfox/Firebugを好みますが、FiddlerやChrome/F12もどちらも良いです)。ブラウザーのアクションを正確に複製できる限り、サーバーはその違いを知ることができません。ここで問題となるのは、ブラウザが複雑であり、フォームのセキュリティが強化されるほど、要求の厳しいサ​​ーバーが増えることです。つまり、ログインを偽ったり、cookieを取得したり、subsequnt要求に戻したり、Viewstateデータとxss防止変数を処理しなければならないかもしれません。それは可能であり、最初のオプションよりはるかに堅牢ですが、作業に苦労する可能性があります。非常に安全なフォームでなければ、これが最善の策です。 More information here

ブラウザの自動化によって、それを実行してください:Seleniumはおそらくここに最良の選択肢である(他の人が述べたように)それは、フォーム自体の変化(しかしないように敏感だという点で同様の欠陥からのWebBrowserコントロールに苦しみますWebブラウザコントロールなど)。

ちなみに、Visual Studio Ultimate/Test Edition(およびその他のもの)があれば、Webサイトの負荷テストを自動化する優れたエンジンを含む一連のテストツールが含まれています。これは、エミュレーションのあらゆるステップを見ることができるようにフォームが正確に何をするかを追跡するのにも優れています。

ホープこれは