<div id="mydiv" runat="server" class="mydivclass" style="display: none">
<label class="medium" for="txtEntityName">Name of something:</label>
<br />
<asp:TextBox ID="txtEntityName" runat="server"></asp:TextBox><br />
</div>
我需要能够检查我的TextBox是否可见。检查txtEntityName.Visible似乎不起作用,也不检查txtEntityName.Style [&#34; display&#34;] ==&#34; none&#34;因为在html中,&#34;显示:无&#34;似乎只适用于div本身。也就是说,div内部的文本框是不可见的,但它不包含该样式。
是否有其他方法可以检查文本框是否可见?或者将txtEntityName的风格明确地绑定到mydiv&s; s? 我知道可以直接设置TextBox的可见性,但我想看看在我走这条路之前是否还有其他选择。
答案 0 :(得分:3)
虽然在Coded UI Test中无法直接检查控件的可见性,但我们可以通过几种方法进行检查。
使用UITestControlNotVisibleException异常
使用自定义方法
1.使用UITestControlNotVisibleException异常
使用这种方法,我们可以确保给定的控件是否可见。通过这种方法,首先我们必须执行一些操作,如设置控件值,以便Coded UI Test可以触发此异常。一旦触发了这个异常,就按下Assert.Fail('message');
try
{
}
catch(UITestControlNotVisibleException exp)
{
Assert.Fail("textboxName
control is invisible on web page.");
}
但是使用这种方法很好,因为有时相同的异常不会触发。 另一种方法是使用自定义方法。
2.使用自定义方法
编码的UI测试提供了一个名为BoundingRectangle的属性,它给出了控件在网页上的位置。如果在网页上看不到控件,则控件的X和Y坐标设置为-1。 我们可以创建自定义扩展方法并直接在TestUiControls上调用。例如 -
public static class CodedUITestControlsLibrary
{
public bool IsVisible(this HtmlControl HtmlControlToCheckForVisiblity)
{
var xCordinate = HtmlControlToCheckForVisiblity.BoundingRectangle.X;
var yCordinate = HtmlControlToCheckForVisiblity.BoundingRectangle.Y;
return(xCordinate>-1 && yCordinate>-1);
}
}
[TestMethod]
public void MyTestMethod()
{
var HtmlDivControl = {find HtmlDiv Control};
Assert.IsTrue(HtmlDivControl.IsVisible(),
"Expected HtmlDiv Control is not visible.");
}
在上面的代码中,有一个名为IsVisible()的扩展方法,可以调用从HtmlControl基本控件继承的任何类型的CodedUI控件。
答案 1 :(得分:1)
您可以使用jQuery :visible
选择器。以下是测试方法:
添加功能以测试可见性。添加输入以触发该功能。您的标记可能如下所示:
<head runat="server">
<title></title>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script type="text/javascript">
function test() {
if ($('#<%= txtEntityName.ClientID %>').is(':visible')) {
alert("Visible");
}
else {
alert("Not Visible");
}
};
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div id="mydiv" runat="server" class="mydivclass" style="display: none">
<label class="medium" for="txtEntityName">Name of something:</label>
<br />
<asp:TextBox ID="txtEntityName" runat="server"></asp:TextBox><br />
</div>
<input type="button" onclick="test();" value="test" />
</div>
</form>
</body>
免责声明:具有可见性的元素:隐藏或不透明度:0被视为可见。来源::visible Selector。