5

短いバージョン:
URL(部分一致)が要求されていることを確認しようとしています(クライアント側)。

ロングバージョン:
テストの一部を自動化することを検討しています。現在、Fiddler2を使用して手動で確認しています。

シナリオは次のとおりです。

  1. ユーザーがサイトAに移動します
  2. 私のアプリはトラッキングURLを使用してリダイレクトします(FiddlerのHTTPトラフィックに表示されます)
  3. ユーザーは最終的にサイトAにアクセスし、パラメーターが適用されます。

C#で、ステップ2が部分一致(たとえば{string}を含む)を実行することによって発生したことを確認したいと思います。

質問:
これについてはどうすればよいですか?HttpWebRequest私はクラスとを調べ始めましFiddlerCoreたが、可能な限り単純なコードを使用するのが大好きで(必要に応じて他のチームメンバーが更新できるように)、StackOverflowのユーザーが何を推奨するかを尋ねました。

4

4 に答える 4

7

SharpPcapを見てください。これは、人気のあるWiresharkで使用されるパケットキャプチャライブラリであるpcap(WindowsではWinPcap)に基づいています。

始めるためのサンプルコードがたくさんあるCodeProjectに関する本当に素晴らしいチュートリアルがあります:http://www.codeproject.com/Articles/12458/SharpPcap-A-Packet-Capture-Framework-for-NET

パケットを保持したら(SharpPcapは解析ではなくキャプチャします)、Packet.Netを使用して、パケットを使用可能なもの(この場合はHTTP通信)に解析できます。

于 2012-09-05T22:10:33.360 に答える
1

編集:質問を読んだときに#2が中間URLとして表示されませんでした。これは、(唯一の)リダイレクトアクションのようでした。選択したブラウザーと実行されるリダイレクトのタイプに応じて、Seleniumを使用してページリファラーを読み取り、リダイレクトを取得できます。

WebDriver driver; // Assigned elsewhere
JavascriptExecutor js = (JavascriptExecutor) driver;

// Call any javascript
var referrer = js.executeScript("document.referrer");

C#でのすべてのWebサイト/アプリテストのニーズには、SeleniumWebdriverをお勧めします。NUnit、MSTest、その他のテストフレームワークと非常にうまく統合されており、非常に使いやすいです。

Selenium Webdriverを使用すると、C#テストコードから自動ブラウザーインスタンス(Firefox、Chrome、Internet Explorer、PhantomJSなど)を起動します。次に、「URLに移動」、「入力ボックスにテキストを入力」、「ボタンをクリック」などの簡単なコマンドでブラウザを制御します。詳細については、APIをご覧ください。

他の開発者もそれほど必要としません。テストスイートを実行するだけで、ブラウザがインストールされていれば機能します。私はそれを、それぞれが異なるブラウザー設定を持っている開発者のチーム全体の何百ものテスト(私たちがそれぞれ調整したテストでも)とチームビルドサーバーでうまく使用しました。

このテストでは、手順1のURLに移動し、1待ってから、手順3のURLを読み取ります。

これは、例によるSelenium-WebDriverAPIの紹介から採用されたサンプルコードです。探しているURLも{string}(この例では「チーズ」)もわからないので、サンプルはあまり変わっていません。

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;

// Requires reference to WebDriver.Support.dll
using OpenQA.Selenium.Support.UI;

class RedirectThenReadUrl
{
    static void Main(string[] args)
    {
        // Create a new instance of the Firefox driver.

        // Notice that the remainder of the code relies on the interface, 
        // not the implementation.

        // Further note that other drivers (InternetExplorerDriver,
        // ChromeDriver, etc.) will require further configuration 
        // before this example will work. See the wiki pages for the
        // individual drivers at http://code.google.com/p/selenium/wiki
        // for further information.
        IWebDriver driver = new FirefoxDriver();

        //Notice navigation is slightly different than the Java version
        //This is because 'get' is a keyword in C#
        driver.Navigate().GoToUrl("http://www.google.com/");

        // Print the original URL
        System.Console.WriteLine("Page url is: " + driver.Url);

        // @kirbycope: In your case, the redirect happens here - you just have
        // to wait for the new page to load before reading the new values

        // Wait for the page to load, timeout after 10 seconds
        WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
        wait.Until((d) => { return d.Url.ToLower().Contains("cheese"); });

        // Print the redirected URL
        System.Console.WriteLine("Page url is: " + driver.Url);

        //Close the browser
        driver.Quit();
    }
}
于 2012-09-06T00:22:39.683 に答える
0

HTTPトラフィックをスニッフィングしたいようです。winpcapのようなパケットキャプチャドライバを使用するか、そのDLLをインポートしてテストするか、 @SimpleCoderが言及したSharpPcapを使用することができます。

最小限の労力で、FiddlerScriptアドオンを作成して、リクエストを確認し、必要に応じてリダイレクトします。

于 2012-09-05T22:12:41.703 に答える
0

フォローアップ: Telerikのプロキシを使用してHTTPリクエストを送信し、C#経由で応答を解析することになりました。踏み台として使用された記事は次のとおりです。

https://docs.telerik.com/teststudio/advanced-topics/coded-samples/general/using-the-http-proxy

于 2013-01-10T00:04:35.937 に答える