Используя perl и TAP, я написал много тестов на селен и сохранил их в * .t файлах.
Я создал несколько вспомогательных функций, поместил их в не объектно-ориентированный пакет, скажем, My:: Util :: SeleniumHelper.
Все функции экспортируются из этого модуля.Вначале одного пакета было достаточно, теперь в одномодульном API содержится немало не связанных функций.Эти функции вызываются, например, make_sel (), head_ok (), cms_logout (), cms_login (), cms_clickthru_simple (), selenium_rc_running (), treecontrol_toggles () - вы получите идею.
Более того, многие блоки)кода в t-файлах все еще избыточно, что делает файл .t похожим на шаблон.
Таким образом, я хочу придать моему * .t коду более внушительный дизайн.
Любые идеи о том, как разработать новый API?
По сути, я также ищу примеры кода (здесь или в Интернете), где кто-то расширил объект селена вумный путь.Он не обязательно должен быть в perl.
Было бы полезно добавить методы в объект Test :: WWW :: Selenium $ sel?
$sel->my_click_ok()
Должен ли япопытаться переопределить объект $ sel ?, Получение Test :: WWW :: Selenium :: Customized класса из Test :: WWW :: Selenium
Это нарушило бы «Предпочитать композицию над наследованием»
Должен ли я обернуть объект селена в другой объект с помощью композиции?
$myobj->{sel}->click_ok()
Вот еще несколько требований или мыслей:
Я также хочу использовать шаблон объектов страницы / идиома .Пока не делаю.Может быть, так
$myobj->{current_page}->loginbox
или
$myobj->do_stuff($current_page->loginbox)
Я заметил, что в большинстве случаев, в основном, я хотел бы дать методу селена что-то вроде модификатора Moose'sround ().Делайте стандартные вещи, но делайте некоторые вещи до и после.
Однако я предпочитаю не использовать Moose здесь, потому что тесты должны выполняться на нескольких разных машинах, и не хотят устанавливать Moose и всеего зависимости от всех этих компьютеров.Я не говорю, что невозможно использовать лося, однако я еще не использовал не-лося объекты (Test :: WWW :: Selenium) и лося вместе.