2016-09-20 61 views
2

我有一个带有登录按钮的网页,只需点击按钮即可访问该网站。这是很容易写这个工作:CodedUI - 检查控件是否存在

//点击登录按钮

 UITestControl Login = new UITestControl(Browser); 
     Login.TechnologyName = "Web"; 
     Login.SearchProperties.Add("ControlType", "Button"); 
     Login.SearchProperties.Add("Type", "Submit"); 
     Login.SearchProperties.Add("DisplayText", "Log In"); 
     Mouse.Click(Login); 

但是,您首次登录后,你仍然是一个小时登录(如果自动注销闲置过小时)。如果您在一个小时内多次访问该网站,将不会有登录按钮,因为您仍然登录,所以每次运行我的测试时,它都会立即出错,因为它无法找到控件。

我希望是有道理的,这里是一个简介:

第一次来网站 - 出现登录页面,点击登录按钮,才能进入 随后的时间到现场 - 似乎没有登录界面,没有需要登录

所以基本上我想说,“如果有一个登录按钮,然后双击它做下的事情,如果没有登录按钮,然后做下的事”

回答

4

有一个TryFind()方法,你可以使用。

UITestControl Login = new UITestControl(Browser); 
Login.TechnologyName = "Web"; 
Login.SearchProperties.Add("ControlType", "Button"); 
Login.SearchProperties.Add("Type", "Submit"); 
Login.SearchProperties.Add("DisplayText", "Log In"); 

// TryFind() returns true if it's in the Markup somewhere, even if hidden. 
// By testing Width > 0 && Height > 0, we make sure it is visible. 
// If it were Hidden and we did not use TryFind() before checking Height 
// or Width, there would be an exception thrown. 
if(Login.TryFind() && Login.Width > 0 && Login.Height > 0) 
{ 
     Mouse.Click(Login); 
} 

还有TryGetClickablePoint方法,您可以使用,而不是寻找宽度和高度。

Point p; 
if(Login.TryGetClickablePoint(out p)) 
{ 
     Mouse.Click(Login); 
} 
+1

这是一个非常精彩的回答,爱的宽度和高度尖MPavlak。 –

+0

这是一个很好的答案,它的工作非常好,非常感谢! –

+0

如果您认为这是您问题的答案,请标记为已接受。谢谢! – MPavlak

0

有一个.Exists方法对所有UI控件

var lastPageButton = new HtmlHyperlink(parent); 
lastPageButton.SearchProperties[HtmlHyperlink.PropertyNames.Title] = "Login"; 
lastPageButton.SearchProperties[HtmlHyperlink.PropertyNames.Class] = "YourClassHere"; 
if (lastPageButton.Exists) Mouse.Click(lastPageButton); 
//Other work