編集:質問を読んだときに#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();
}
}