CodedUI - 检查控件是否存在

时间:2016-09-20 13:06:41

标签: coded-ui-tests

我有一个带登录按钮的网页,只需点击按钮即可访问该网站。写这个很容易做到:

//单击“登录”按钮

        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);

但是,在您第一次登录后,您仍然会保持登录状态一小时(如果闲置超过一小时则自动注销)。如果您在一小时内多次访问该站点,则没有登录按钮,因为您仍然登录,因此每次运行我的测试时,它都会立即生成错误,因为它无法找到控件。

我希望这是有道理的,这是一个概要:

第一次访问网站 - 出现登录屏幕,点击登录按钮,获取条目 网站的后续时间 - 不显示登录屏幕,无需登录

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

2 个答案:

答案 0 :(得分:5)

您可以使用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 :(得分:0)

所有UI控件都有.Exists方法

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