Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编码ui测试项目,获取asp标签的值_C#_Asp.net_Coded Ui Tests - Fatal编程技术网

C# 编码ui测试项目,获取asp标签的值

C# 编码ui测试项目,获取asp标签的值,c#,asp.net,coded-ui-tests,C#,Asp.net,Coded Ui Tests,在webforms中创建了一个简单的计算器应用程序。 用户在文本字段MainContent\u numberTb中输入一个数字,然后单击结果按钮 在我的解决方案中添加了一个新的“编码UI测试项目”。已经通过添加“5”测试了UI,这一切都很好。现在将实际结果与预期结果进行比较 BrowserWindow Browser = BrowserWindow.Launch("http://url"); UITestControl UiInputField = new UITestControl(Brow

在webforms中创建了一个简单的计算器应用程序。 用户在文本字段
MainContent\u numberTb
中输入一个数字,然后单击结果按钮

在我的解决方案中添加了一个新的“编码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>
更新 好的,使用调试器控制台,我能够使用
((Microsoft.VisualStudio.TestTools.UITesting.HtmlControls.HtmlSpan)new System.Collections.ArrayList.ArrayListDebugView(((System.Collections.CollectionBase)(AllNumsTB.FindMatchingControls()).List.InnerList)获取标签的值。项[0])。显示文本

但是当我在代码中使用它时&
ArrayListDebugView
由于保护而无法访问

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 更新 感谢K Scandrett的回答…如果可以的话,我想知道您是否也可以帮助我进行验证…如果用户输入一封信或一个非正数,则会发出错误消息

<asp:RegularExpressionValidator ID="regexpName"

 //VALIDATION MESSAGE
                UITestControl PositiveNumValMsg = new UITestControl(Browser);
                PositiveNumValMsg.TechnologyName = "Web";
                PositiveNumValMsg.SearchProperties.Add("Id", "MainContent_regexpName");
但即使标签未显示,它们都返回true,但标签仍在页面上,只是设置为“不可见”。那样的话,我应该检查一下它的样式

//string labelText3 = PositiveNumValMsg.GetProperty("style").ToString();
然后检查样式是否包含
可见性:可见

要获取其属性

设置
ControlType
不是强制性的,因此以下的一些变化应该可以工作:

UITestControl AllNumsTB = new UITestControl(Browser);
AllNumsTB.TechnologyName = "Web";
AllNumsTB.SearchProperties.Add(HtmlControl.PropertyNames.Id, "MainContent_AllNumLbl_Res");

var result = AllNumsTB.GetProperty(HtmlLabel.InnerText).Trim();
// var result = AllNumsTB.GetProperty("InnerText").Trim();
来自:

编辑:关于测试ASP.Net验证程序

我已经能够通过以下方法检查验证程序消息是否显示:

1) 创建了一个测试asp.net页面,其中包含一个正则表达式验证器,该验证器正好需要2位数字:

<asp:TextBox ID="numberTb" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="regexpName" ControlToValidate="numberTb" ValidationExpression="\d{2}" runat="server" ErrorMessage="Please enter 2 digits"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />

当然,一旦你知道你在寻找什么,所有这些都可以手动编码。

谢谢你的帮助,第二个例子对我很有用。如果可以的话,我已经更新了Q以包含验证查询。我知道这不是原始问题的一部分,我仍然会认为你的答案是正确的,但你似乎知道你在说什么,我找不到我想要的,所以我想我会问。如果没有,谢谢你的原始答案!。。。验证消息以文本形式呈现,因此您应该能够使用
var positiveEnumValMsg=new HtmlSpan(浏览器)如果您想更明确。变量通常以小写字母开头,因此,
positiveEnumValMsg
将是一个更为传统的名称。不能使用positiveEnumValMsg.GetProperty(“样式”),因为它返回空值….trusted var positiveEnumValMsg1=new HtmlSpan(浏览器);positiveEnumValmsg1.GetProperty(“样式”);这表示表达式中存在内部错误。感谢您的回复,问题在于找不到标签。我可以通过UITestControl PositiveEnumValMsg=新UITestControl(浏览器)找到它;positiveEnumValMsg.TechnologyName=“Web”;positiveEnumValMsg.SearchProperties.Add(“Id”,“MainContent_regexpName”);问题在于查找style=“visibility:是可见还是隐藏”,这样我就可以在输入字母时测试显示是否可见。谢谢,我理解,但我认为您可以使用与搜索ControlDefinition相同的技术来搜索“visible”的出现,如果它没有找到控件,它将被隐藏。
UITestControl AllNumsTB = new UITestControl(Browser);
AllNumsTB.TechnologyName = "Web";
AllNumsTB.SearchProperties.Add(HtmlControl.PropertyNames.Id, "MainContent_AllNumLbl_Res");

var result = AllNumsTB.GetProperty(HtmlLabel.InnerText).Trim();
// var result = AllNumsTB.GetProperty("InnerText").Trim();
var AllNumsTB = new HtmlLabel(Browser);
AllNumsTB.TechnologyName = "Web";
AllNumsTB.SearchProperties.Add(HtmlControl.PropertyNames.Id, "MainContent_AllNumLbl_Res");
var result = AllNumsTB.InnerText;

string result2;

// you may need to include this section, or you may not
if (result.Length > 0)
{
    AllNumsTB.WaitForControlReady();
    result2 = AllNumsTB.InnerText;
}
<asp:TextBox ID="numberTb" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="regexpName" ControlToValidate="numberTb" ValidationExpression="\d{2}" runat="server" ErrorMessage="Please enter 2 digits"></asp:RegularExpressionValidator>
<asp:Button ID="Button1" runat="server" Text="Button" />
public void DigitValidatorMsgShownWithIncorrectStringInput()
{
    #region Variable Declarations
    HtmlSpan uIAtleast2digitsPane = this.UIHomePageMyASPNETApplWindow.UIHomePageMyASPNETApplDocument.UIAtleast2digitsPane;
    #endregion

    // Verify that the 'ControlDefinition' property of 'At least 2 digits' pane contains ' visible;'
    StringAssert.Contains(uIAtleast2digitsPane.ControlDefinition, " visible;", "The validator was not shown");
}