2016-09-20 4 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