Мы тестируем с использованием селена и используем дизайн объекта страницы.То есть у нас есть файл библиотеки, который содержит все функции определенной страницы нашего сайта.Под «функциональностью» я также подразумеваю процессы - у нас есть библиотека «Page Object» для «Login», «Register», ... которые на самом деле не являются страницами.
Проблема начинается, когда у нас несколько проектовс той же функциональностью.Например, у нас есть мобильная версия нашего сайта, версия для ipad, ... Процесс высокого уровня остается прежним (например, для входа в систему вы все еще: 1) введите имя пользователя 2) введите пароль 3) нажмите Enter) но xpath меняются между сайтами.В большинстве случаев тесты одинаковы, за исключением очень небольшого количества различий (например, в login-mobile у вас нет 4) отметьте меня).
У нас есть решение (I 'Ниже я проиллюстрирую основную идею, которая включает наследование объектов страницы.Я был бы рад услышать, как вы решаете эту проблему.
Наше решение:
- Мы стучим по объекту селена с объектом, который мы называем user
- Каждый проектполучает своего собственного пользователя: т.е. mobileUser, ipadUser и т. д. Все они наследуются от родительского (абстрактного) пользователя.
- Наши библиотечные файлы - это классы, которые наследуются друг от друга.
- Поскольку «главный» скрипт одинаков для всех проектов, мы вызываем один и тот же фрагмент кода для каждого проекта, каждый раз предоставляя ему другой тип пользователя.
- Поскольку в каждом проекте есть пользователь, мы «импортируем» правильный файл библиотеки через пользователя
Например:
def testLogin(user):
user.lib.Login.LoginAction("username", "password")
Имя библиотеки«Login» и функция, которую мы хотим вызвать - «LoginAction».Если user
является mobileUser, тогда Login
будет библиотекой Mobile Login.Если user
- это ipadUser, то это будет библиотека входа в ipad и т. Д.
Несмотря на то, что, похоже, мы нашли решение этой проблемы, получаемый код немного спагетти-иш.Я был бы рад услышать предложения о том, как улучшить и как вы решаете проблему самостоятельно.