webformsで単純な電卓アプリを作成しました。 ユーザはテキストフィールドMainContent_numberTb
に数字を入力し、結果ボタンをクリックします。符号化uiテストプロジェクト、aspラベルの値を取得
新しい「コード化UIテストプロジェクト」を私のソリューションに追加しました。 '5'を追加してUIをテストしましたが、これはすべて正常に動作します。実際の結果と期待される結果を比較したいと思います。すべてのコード上記
BrowserWindow Browser = BrowserWindow.Launch("http://url");
UITestControl UiInputField = new UITestControl(Browser);
UiInputField.TechnologyName = "Web";
UiInputField.SearchProperties.Add("ControlType", "Edit");
UiInputField.SearchProperties.Add("Id", "MainContent_numberTb");
//Populate input field
Keyboard.SendKeys(UiInputField, "5");
//Results Button
UITestControl ResultsBtn = new UITestControl(Browser);
ResultsBtn.TechnologyName = "Web";
ResultsBtn.SearchProperties.Add("ControlType", "Button");
ResultsBtn.SearchProperties.Add("Id", "MainContent_calBtn");
Mouse.Click(ResultsBtn);
正常に動作します私はコントロールの種類の横に何を入れないラベルにアクセスするために
<asp:Label ID="AllNumLbl_Res" runat="server"></asp:Label>
をしようとしたときに、問題が発生?編集はテキストフィールドなので編集しません。次に、実際の結果をどのように格納するので、私はAllNumsTB
を比較できますか?
string expectedAllNums = "1, 2, 3, 4, 5";
UITestControl AllNumsTB = new UITestControl(Browser);
AllNumsTB.TechnologyName = "Web";
AllNumsTB.SearchProperties.Add("ControlType", "?????");
AllNumsTB.SearchProperties.Add("Id", "MainContent_AllNumLbl_Res");
if(expectedAllNums != AllNumsTB.??????)
{
Assert.Fail("Wrong Answer");
}
UPDATE OKので、私は((Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlSpan)new System.Collections.ArrayList.ArrayListDebugView(((System.Collections.CollectionBase)(AllNumsTB.FindMatchingControls()).List).InnerList).Items[0]).DisplayText
を使用してラベルの値を得ることができたデバッガコンソールを使用したが、私はコードでこれを使用する場合& ArrayListDebugView
は、保護のためにアクセスできません??
///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////// //// 更新回答ありがとうございますK Scandrettさんの回答...もし私があなたにも妥当性確認の手助けをしてくれるのだろうかと疑問に思うかもしれません...ユーザーが文字または正の数以外の数字を入力するとエラーメッセージこのすべてが正常に動作します。..
<asp:RegularExpressionValidator ID="regexpName"
//VALIDATION MESSAGE
UITestControl PositiveNumValMsg = new UITestControl(Browser);
PositiveNumValMsg.TechnologyName = "Web";
PositiveNumValMsg.SearchProperties.Add("Id", "MainContent_regexpName");
を発射します、しかし、私はこれまでのところ、私が試してみました...ラベルが表示されていないかどうかをテストしたい
//bool visible = false;
//System.Drawing.Point p;
//// If the control is offscreen, bring it into the viewport
//PositiveNumValMsg.EnsureClickable();
// // Now check the coordinates of the clickable point
// visible = PositiveNumValMsg.TryGetClickablePoint(out p)
// && (p.X > 0 || p.Y > 0);
var isVisible = PositiveNumValMsg.WaitForControlPropertyNotEqual(UITestControl.PropertyNames.State, ControlStates.Invisible);
ラベルは表示されていなくてもすべてtrueを返しますが、表示されていないページにはまだ表示されません。その場合、私はスタイルがvisibility: visible
が含まれているかどうかを確認し、その後
//string labelText3 = PositiveNumValMsg.GetProperty("style").ToString();
のようにそのstyle..somethingを確認する必要がありますか?
ご協力いただきありがとうございます.2番目の例は私のために働いています。私が検証クエリを含めるようにQを更新したかもしれません。 私はこのオリジナルのQの一部ではないことを知っていますが、あなたの答えは正しいと思いますが、あなたはあなたが何であるかを知っているようですが、 について話しています。とにかく、元の答えに感謝しています... – John
検証メッセージはとしてレンダリングされるので、より明示的にするには、 'var PositiveNumValMsg = new HtmlSpan(Browser);'を使用できるはずです。通常、変数は小文字で始まるので、 'positiveNumValMsg'はより一般的な名前になります。 –
これはNULLを返すので、PositiveNumValMsg.GetProperty( "style")を使用できません....試行var PositiveNumValMsg1 = new HtmlSpan(Browser); PositiveNumValMsg1.GetProperty( "Style");これは式バリデータの内部エラーです – John