webaii htmlcontrol.click()は、間違ったコントロールをクリックしています

StackOverflow https://stackoverflow.com/questions/3159125

  •  01-10-2019
  •  | 
  •  

質問

WebAIIテストフレームワークの無料版[Telerikが取得する前にテストのArtによってリリースされたもの]をかなり使用したので、基本的に機能することは知っています。ですから、私が今抱えている問題は、私に完全に困惑させることです。

既存のサイトでナビゲーションをテストし、一連のページを通過しようとしています。 (とりわけ)2つのボタンがあるページに到達します。 1つは、history.back()を呼び出すJavaScript関数を呼び出すOnClickハンドラーを備えたタイプボタンの入力要素である「バック」ボタンです。もう1つは送信ボタンです。

WebAiiには、送信ボタンを見つけるのに問題はありません。しかし、クリックするように言うと、すべての外観に、バックボタンをクリックします。

これがサイトの関連するHTMLです。

<div align="right"> 
    <table border="0" width="200" cellpadding="8" style="border-collapse: collapse" bordercolor="#E0DFE3"> 
        <tr> 
            <td> 
                <input type="button" value="<- Back" name="B2" onclick="cancelChange()" > 
            </td> 
            <td> 
                <input type="submit" value="Maint Details ->" name="lnkSubmit"> 
            </td> 
        </tr> 
    </table> 
</div> 

そして、これがテストコードです:

        HtmlInputSubmit maintDetailsButton = Find.ByAttributes<HtmlInputSubmit>("value=Maint Details ->"); 
        maintDetailsButton.Click(); 

        Assert.IsTrue(ActiveBrowser.Url.Contains(expectedPage), "URL {0} does not contain expected page {1}", ActiveBrowser.Url, expectedPage); 

一連の操作は手動でクリックすると正常に機能しているため、サイトの問題であるという証拠がわかりません。実際、「バック」ボタンをクリックしていて、「メンテナンスの詳細」ボタンではなく、豊富な証拠を見てきました。 (fiddlerは、クリック要求の送信時にリクエストが発行されていないことを示しています - history.back()の実行と一致します。ブラウザーは単にキャッシュから再表示されるためです。クリックすると、実際には前のページに移動します。バックボタンから「OnClick」属性を削除すると、ボタンをクリックすると何もできません。テストコードを実行すると、サイトは何もしません - 単に現在のページにとどまります。)

私は完全に困惑しています。誰かが私にヒントを与えることができますか?

役に立ちましたか?

解決

まあ、それは私の頭を壁に打ち負かすのに一週間かかったが、私はこれを理解した。

最初に、私は何かを発見しました。私が推測することができたことから、あなたが発見したとき、WebAiiはその要素をインデックスとしてドキュメント内のそのタイプのすべての要素のリストに追跡します。次に、見つかった要素にアクセスするたびに、WebAiiは「document.getElementsBytag( '')[]」の形式のJavaScript関数を生成します。 WebAiiが見つけた要素を特定する方法を見つけようとすると、これを偶然発見し、例外で実行しようとしている関数を表示するJavaScriptエラーを不注意に生成しました。それで、私はそれがインデックスごとに要素にアクセスし、何らかの形でそのインデックスがオフになっている場合、それが私が望むものの前に入力要素をクリックしていたことは理にかなっていると推論しました。そこで、私はfind.allbytagname( "input")を行い、VSデバッガーの結果のreadonlycollectionを調べ、ページのビューソースを見て識別できるものと見つけた入力要素を一致させ始めました。 WebAiiがリストしていないものがページの上部近くに上にあることを発見したことを発見しました。そして、綿密な試験で、欠落していた入力要素が欠落していることを発見しました。したがって、どうやらWebaiiは入力要素としてそれを見つけられなかったようですが、JavaScriptはそうしました。したがって、私のテストが「MaintDetails.click()」と言ったとき、それは「document.getElementsBytag( 'input')[20] .click()」のようなものに変換されていました。 「document.getElementsBytag( 'input')[21] .click()」」。

サイトソースコードの不足しているクロージング角度ブラケットを修正し、テストが実行されました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top