#c# #coded-ui-tests
#c# #coded-ui-тесты
Вопрос:
<div class="validation-summary-errors">
<span>Please check the following entries:</span>
<ul>
<li>Please select a client account</li>
<li>Please select a beneficiary account</li>
</ul>
</div>
public virtual T VerifyAmountValidationMessages()
{
HtmlDiv error = new HtmlDiv(_browserWindow);
error.SearchProperties[HtmlDiv.PropertyNames.Class] = "validation-summary-errors";
var errors = error.FindMatchingControls();
var errorLi = error.GetChildren()[0];
foreach (var item in errors)
{
Assert.IsTrue(item.GetProperty("InnerText").ToString().Contains("Please check the following entries:rnPlease select a client accountrnPlease select a beneficiary account"));
}
return (T)this;
}
Как я могу перебрать все li и утвердить внутренний текст каждого Li, с помощью getChildren я могу получить доступ к элементу span по отдельности, но я хочу получить доступ к Li по отдельности? Прямо сейчас я утверждаю весь текст, что вообще не является правильным подходом.
Ответ №1:
Элементом ul был бы errors.GetChildren()[0];
вы, если бы они перебирали его дочерние элементы.
<div class="validation-summary-errors">
<span>Please check the following entries:</span>
<ul>
<li>Please select a client account</li>
<li>Please select a beneficiary account</li>
</ul>
</div>
public virtual T VerifyAmountValidationMessages()
{
HtmlDiv error = new HtmlDiv(_browserWindow);
error.SearchProperties[HtmlDiv.PropertyNames.Class] = "validation-summary-errors";
var errors = error.FindMatchingControls();
var errorul = error.GetChildren()[1];
foreach (var item in errors
{
// check individual li items
}
return (T)this;
}
Это может показаться хрупким тестом, однако подумайте, будут ли внесены какие-либо изменения в способ отображения ошибок, вам придется переписать тест.
Комментарии:
1. Спасибо за помощь, тогда как я должен это проверить?
2. ИМО, ваш первый метод был на правильном пути, я бы просто использовал ссылку на
error
(div сvalidation-summary-errors
классом) и убедился, что он содержит все сообщения, которые вам нужно, чтобы он содержал.3. Извините, что говорю, но я вас не понял.
4. Вы не хотите проверять наличие определенных конструкций (т. Е.
<ul>
,<li>
и т.д.) При тестировании, Это приводит к хрупким тестам, которые завершаются неудачей всякий раз, когда на странице вносятся изменения в дизайн, поэтому в вашем случае, я думаю, тест должен проверить, что элемент сvalidation-summary-errors
классом на нем содержит сообщения об ошибках, которые вас интересуют.5. Понял вашу точку зрения, но не знаю, как это сделать: D В любом случае спасибо вам за помощь.