-3

これは 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>
        &nbsp;&nbsp;&gt;&nbsp;&nbsp;<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>  
-----------^
4

2 に答える 2

0

HTML を見ると、テキストがパンくずオブジェクトに関連していないようです。使用する検索結果は検索されますが、テキストはその div<div>の子に関連付けられているようです。 Find メソッドを使用して正しい子を取得するか、div の textContent プロパティを試すことができます。<a>

ローカルでの実行と TFS での実行の違いは、おそらく IE や OS のバージョンが異なることで説明できます。

于 2016-04-01T11:24:14.403 に答える