6

背景:イントラネットWebアプリケーションでの注文入力を自動化するWindowsフォームアプリを作成しています。大量の注文入力が必要で、多額の費用がかかるため、私はタスクを自動化することを志願しました。

問題:webbrowserクラスを使用してWebアプリをナビゲートしています。私は非常に遠くまで行きましたが、障害物に到達しました。アプリには、Webダイアログページを開く部分があります。Webダイアログを操作するにはどうすればよいですか。webbrowserクラスの私のインスタンスは、まだ親ページにあります。誰かが私を正しい方向に向けてくれることを願っています。

4

3 に答える 3

6

いくつかのオプションがあります。他の人からの回答を拡張し、新しいアイデアを追加するには...

Webbrowser コントロールを使用して実行する:これは、ここに示すようにターゲット ページに JavaScript を挿入するか、JavaScript オブジェクトを作成し、webbrowser.objectforscriptingプロパティを介してブリッジとして使用することで、技術的に可能です。これは非常に脆弱です。Web サイトで要素の ID を変更するだけで壊れる可能性があります。また、コードがフォームの機能を妨げないようにする必要があります (関数名の衝突など)。

ポストバックを使用して実行する: Web ブラウザーとサーバー間の通信を監視します (個人的には Firfox/Firebug を好みますが、Fiddler または Chrome/F12 もどちらも優れています)。ブラウザの動作を正確に再現できる限り、サーバーは違いを認識できません。ここでの問題は、ブラウザーが複雑であり、フォームが安全であるほど、サーバーの要求が厳しくなることです。これは、ログインを偽造し、Cookie を取得し、後続のリクエストでそれらを送り返し、Viewstate データと xss 防止変数を処理する必要がある場合があることを意味します。それは可能であり、最初のオプションよりもはるかに堅牢ですが、機能するのが面倒になる可能性があります. 高度に安全なフォームでない場合は、これが最善の策です。詳細はこちら

ブラウザーの自動化で行う: Seleniumはおそらくここで最良のオプションです (他の人が述べたように) が、フォーム自体の変更に敏感であるという点で、webbrowser コントロールと同様の欠陥があります (ただし、webbrowser コントロールほどではありません)。 .

ちなみに、Visual Studio Ultimate/Test エディション (および他のいくつかのエディション、どちらかは不明) をお持ちの場合は、Web サイトの負荷テストを自動化するための優れたエンジンを含む一連のテスト ツールが含まれています。これは、エミュレーションのすべてのステップを確認できるため、フォームが正確に何をするかを追跡するのにも最適です.

お役に立てれば

于 2012-05-04T20:25:59.427 に答える
4

必要な複雑さのレベルに応じて、次の 2 つの選択肢があります。

  1. Fiddlerなどの HTTP デバッガーを使用して、各ページに送信する必要がある POST データを見つけ、HttpWebRequestを介してそれを模倣します。
  2. Browser Automation Tool同様のSeleniumを使用して、仕事をしてください。

注: あなたの行動は Web サイトによってスパム行為と見なされる可能性があるため、IP ブロック、CAPTCHA の準備をしてください...

于 2012-05-04T16:01:51.887 に答える
0

Selenium を試すことができます: http://seleniumhq.org/ UI 自動化は、これらのタイプのタスクに対するはるかに直感的なアプローチです。

于 2012-05-04T16:19:56.353 に答える