これは StackOverflow に関する私の初めての投稿であり、問題全体を詳細に提供できたことを願っています。他の情報を提供する必要がある場合に備えて、お知らせください。問題の説明: あるページから別のページへのナビゲーション順序を表示する通常のブレッドクラムを使用しています。ブレッドクラムには、html 形式の id = “divbreadcrumb” があります。
例: ホームページ (Home ) から予約ページ (Bookings) に移動すると、ナビゲーションは次のようになります。
ホーム > ご予約
ブレッドクラムのテストを自動化し、ページに表示されるブレッドクラム テキストと実際のブレッドクラム テキストをチェックしたいと考えています。以下に示すコードを使用して、ATDDツール、つまりSpecflow/SpecRunおよびNunitとともにセレンWebdriverを使用して、それを達成しようとしています。
ここで、ローカルでテストを実行しようとすると正常に動作しますが、コードを TFS にチェックインしてビルドすると、IwebElement 要素からテキストが見つからないか、または返されるため、VS テスト ランナーはビルドに失敗しますString.Empty としてのテキスト。これで、同じテストをローカル マシンで実行すると、完全に正常に動作し、予想されるテスト結果と Iwebelement (ブレッドクラム) の予想値が得られます。また、上記のブレッドクラムの HTML 構造はバックエンドでレンダリングされています。これは、実行時に webdriver の pagesource プロパティを使用して HTML がレンダリングされ、例外メッセージに表示されることを確認しようとしたためです。
また、バックエンドの HTML コードは次のように表示されます。
<div class="breadcrumb" >
<div class="breadcrumb-content" >
<div class="breadcrumb" id="divBreadcrumb" >
<a onclick="some code written here" href="xyz.com">Home</a>
> <a href="LMN.com">Bookings </a>
</div>
</div>
</div>
自動化スクリプトで使用したコードを PFB して、ページのブレッドクラムからのテキストをチェックします。
public void TestingBreadcrumb(int p0)
{
InternetExplorerOptions IEOptions = new InternetExplorerOptions();
IEOptions.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
IEOptions.IgnoreZoomLevel = true;
IEOptions.UnexpectedAlertBehavior = InternetExplorerUnexpectedAlertBehavior.Ignore;
IWebDriver iEDriver = new InternetExplorerDriver(IEOptions);
iEDriver.Manage().Window.Maximize();
iEDriver.Navigate().GoToUrl("http://example.com");
var breadcrumb = iEDriver.FindElement(By.Id("divBreadcrumb")).Text.ToString();
Assert.AreEqual("Home > Bookings ", breadcrumb);
}
私が得るエラーは
[ERROR] Expected string length 18 but was 0. Strings differ at index 0. Expected: "Home > Bookings "
But was: <string.Empty>
-----------^