我有一个带登录按钮的网页,只需点击按钮即可访问该网站。写这个很容易做到:
//单击“登录”按钮
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);
但是,在您第一次登录后,您仍然会保持登录状态一小时(如果闲置超过一小时则自动注销)。如果您在一小时内多次访问该站点,则没有登录按钮,因为您仍然登录,因此每次运行我的测试时,它都会立即生成错误,因为它无法找到控件。
我希望这是有道理的,这是一个概要:
第一次访问网站 - 出现登录屏幕,点击登录按钮,获取条目 网站的后续时间 - 不显示登录屏幕,无需登录
所以基本上我想说,“如果有一个登录按钮,点击它然后做下一件事,如果没有登录按钮,那就做下一件事”
答案 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