1

私はこれで髪を引き裂いています。IE 11 に対して Visual Studio 2012 でビルドされた簡単なコード化された UI テストがあります。ログインしようとしているのは、ユーザーがログインしていることを UI が表示することを確認してからログアウトすることだけです。コード化された UI テストは、ログアウトするまで機能します。ログアウトしようとすると、次のようになります。

TechnologyName: 'Web' ControlType: 'Custom' TagName: 'form' Id: 'logoutForm'

検索条件 Id='logoutForm' && ControlType='Custom' に一致するコントロールが見つかりませんでした ---> System.Runtime.InteropServices.COMException: COM コンポーネントの呼び出しからエラー HRESULT E_FAIL が返されました。

フィルター/検索条件は正しく表示されます。なぜ機能しないのかわかりません。ログアウトボタンのhtmlは以下の通り

 <form action="/Account/LogOff" class="navbar-form " id="logoutForm" method="post">  <input name="__RequestVerificationToken" type="hidden" value=""><a class="btn btn-primary btn-sm" href="javascript:document.getElementById('logoutForm').submit()"><i class="icon-remove"></i>  &nbsp;Log off</a>
    </form>

ここに画像の説明を入力 問題が何であり、なぜ失敗しているのかわかりません。空白のフィールドを削除するか、明示的な ID を追加しようとしましたが、すべて役に立ちませんでした。また、検索構成で遊んでみましたが、役に立たなかったようです。VS 内でハイパーリンクを右クリックし、[コントロールの検索] をクリックすると、コントロールが適切に強調表示されます。私は途方に暮れています。ご指導ありがとうございます。

更新:ボタンの生成コードは次のとおりです

[GeneratedCode("Coded UITest Builder", "11.0.60315.1")]
public class UILogoutFormCustom : HtmlCustom
{

    public UILogoutFormCustom(UITestControl searchLimitContainer) : 
            base(searchLimitContainer)
    {
        #region Search Criteria
        this.SearchProperties["TagName"] = "form";
        this.SearchProperties["Id"] = "logoutForm";
        this.FilterProperties["Class"] = "navbar-form ";
        this.SearchConfigurations.Add(SearchConfiguration.DisambiguateChild);
        this.WindowTitles.Add("someTitle");
        #endregion
    }

    #region Properties
    public HtmlHyperlink UILogoffHyperlink
    {
        get
        {
            if ((this.mUILogoffHyperlink == null))
            {
                this.mUILogoffHyperlink = new HtmlHyperlink(this);
                #region Search Criteria
                this.mUILogoffHyperlink.SearchProperties[HtmlHyperlink.PropertyNames.Id] = "logOffButton";
                this.mUILogoffHyperlink.SearchProperties.Add(new PropertyExpression(HtmlHyperlink.PropertyNames.InnerText, "Log off", PropertyExpressionOperator.Contains));
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.AbsolutePath] = "document.getElementById(\'logoutForm\').submit()";
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.Title] = null;
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.Href] = "javascript:document.getElementById(\'logoutForm\').submit()";
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.Class] = "btn btn-primary btn-sm";
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.ControlDefinition] = "class=\"btn btn-primary btn-sm\" href=\"jav";
                this.mUILogoffHyperlink.FilterProperties[HtmlHyperlink.PropertyNames.TagInstance] = "1";
                this.mUILogoffHyperlink.WindowTitles.Add("some title");
                #endregion
            }
            return this.mUILogoffHyperlink;
        }
    }

検索構成は私が試していたものですが、通常は設定されていません。

#region Variable Declarations
        HtmlHyperlink uILogoffHyperlink = this.UIPrefereWindow.UIPrefereDocument.UILogoutFormCustom.UILogoffHyperlink;
        #endregion

        // Click 'Log off' link
        Mouse.Click(uILogoffHyperlink, new Point(26, 23));
4

3 に答える 3

1

あなたが提供した限られた情報で、私はあなたが始めるためのいくつかの提案があります:

  1. Visual Studio を再起動するのは面倒ですが、本来あるべきではない場所でこのエラーが表示された場合はいつでも、再起動すると簡単に修正できます。
  2. 問題が解決しない場合: コントロールを TechnologyName: 'Web' Id: 'logoutForm' だけに絞り込むことはできますか? オブジェクトに ID がある場合、多くの場合、他の情報は必要ありません。
  3. まだ動作していません?何が悪いのかを知るには、間違いなくもっと情報が必要です:)
于 2013-10-25T13:02:11.907 に答える
0

私はあなたに2つの提案があります。うまくいくことを願っています:

  1. キーボードの言語は何ですか? 英語でない場合 (私のキーボードでも同様の問題がありました)、設定を英語に変更して、もう一度録音してください。

  2. Visual Studio 2013 を試しましたか? 私は Ultimate を使用しており、これまでのところうまく機能しています。

于 2013-10-25T07:44:12.350 に答える
0

あなたは私のすべての同情を持っています、そして私はあなたの痛みを感じます. 私があなたと同じ問題に直面しているかどうかはわかりませんが、IE 11 とコード化された UI は互いに*嫌い* になっているようです。確かに、IEを別のユーザーとして実行することに関しては、それが私の経験です。これをマイクロソフトに報告しましたが、喜びはありませんでした-この質問のリンクを参照してください。

Windows 8.1 で別のユーザーとしてコード化された UI テストを実行できない

私のアドバイス (そしてあなたはそれを好まないでしょう) は、私がやっていることを実行し、古いバージョンの IE / Visual Studio などで VM を維持し、それをコード化された UI テストで作業するときに使用することです。恐ろしいですが、それが唯一の選択肢のようです。

于 2014-10-23T15:49:33.713 に答える