0

Web アプリケーションをテストするために、セレンを使用して C# で単体テスト用にこのコードを作成しました。特に、ツールチップのウィンドウが適切に表示され、esc キーを押すとウィンドウが消えることをテストしています。

private const string XPathToolTipStyle = "//form[@action='search.aspx'] //div[@id='searchToolTip']/@style";

private bool IsToolTipOpen()
        {
            var tempToolTip = selenium.GetAttribute(XPathToolTipStyle);
            return !(tempToolTip).ToLower().Contains("display: none;");
        }

[Test]
        public void PressEscAndCloseClosingKeys()
        {
            writeSomethingInTheInputBox();
            Assert.That(IsToolTipOpen());
            selenium.KeyPressNative("27"); //press esc
            Assert.That(!IsToolTipOpen());
        }

問題は、Internet Explorer では正しく動作することですが、Firefox では IsToolTipOpen() で無限ループに入り、終了して値を返すことはありません。keyDown、KeyPress などを使用しようとしましたが、うまくいきません。ありがとうございました。

4

1 に答える 1

1

使用している XPath が無限ループに陥っていると思います。div の前にある と と//formの1 つの間にあるスペースを削除します//div

private const string XPathToolTipStyle = "//form[@action='search.aspx']/div[@id='searchToolTip']/@style";

変更をお勧めする理由は、

  1. 有効なxpathだとは思わない
  2. これ//はXpathにドキュメント全体を検索するように指示し、それを行っているため、フォームを検索するように指示し、divの検索を再開するため、奇妙な無限ループに入ります

Selenium は CSS セレクターをサポートしていることを覚えておいてください。使用できる場合は、IE テストをより高速に実行できるためです。

于 2009-12-23T13:43:12.590 に答える