Ситуация следующая: есть веб-приложение. Работаю в ним под "пользователем 1", создаю документ-черновик, среди списка документов этот документ отображается с типом "Черновик" (в нашей системе черновик доступен только автору, т.е. другие пользователи его не видят). После того, как черновик создан и отображен в списке - делаем логофф из системы, и авторизуемся "пользователем 2". Переходим к списку с документами, где был создан черновик и видим, что черновика в списке нет (что является верным).
Вопрос: как правильно написать проверку того, что черновик не отображен на странице?
Пишу на C#.
Я вижу решение этой проблемы следующим образом: нам надо взять данные о черновике (например, название) в момент, когда черновик создан "пользователем 1". Затем, когда мы дошли до списка "пользователем 2" нам надо сделать поиск контрола с названием нашего черновика. И, убедившись, что ничего подобного на странице нет обработать ситуация, как правильную.
В данном описание мне непонятно, как правильно обработать отсутствие контрола? Да и может быть, что мой подход не самый изящный - может будут лучшие предложения.
1) написание метода GetDocuments() который бы возвращал весь список документов (в том числе с типом "Черновик"), например как ArrayList.
Далее, после создания документа-черновика, я бы вытащил список и получил бы ArrayList например с 8-ю элементами.
Потом логинимся другим пользователем и вытаскиваем еще раз список документов.
Теперь начинаем проверять:
проверка1: в списке должно быть 7 документов (тут надо позаботиться о тестовых данных, чтобы был только 1 черновик чужой и чтобы у пользователя 2 не было своих черновиков)
проверка2: у каждого элемента из списка проверяем название - если совпадает/содержит название черновика - выкидываем ошибку, тест провален.
2) имея название черновика, заходим вторым пользователя и находим элемент который содержит весь список (div или table).
Далее забираем его innerHTML в string и сравниваем если он содержит название черновика - если содержит выкидываем ошибку, тест провален.
Можно сделать так, как вы говорили - попробовать найти поиском контрол с таким названием, но тут есть риск что он не найдет элемент не потому, что его нет, а потому что ошибка в "описании" контрола.
Для этого способа просто воспользуйтесь стандартными UITestControl.Exists