Я построил модуль для хранения всех общих селеновых ожидаемых условий, на которые затем ссылаются в различных тестах.(Селеновая часть этого примера не важна, только тот факт, что у меня есть «каталог» из нескольких тысяч наименований.)
# ec module
class EcHR(object):
class sidemenu(object):
hrfile: Clickable = Clickable((By.ID, "sidemenu_HRFile"), f"HR File")
hrvistainfo: Clickable = Clickable((By.ID, "sidemenu_HRVistA Info"), f"HR VistA Info")
class hrfile(__hr_search__):
class actionmenu(__hr_search__.actionmenu):
add: Clickable = Clickable((By.ID, "NewHireLink"), f"Add {BUTTON}")
personnel: Clickable = Clickable((By.ID, 'setEmpType'), f"Personnel Filter {DROPDOWN}")
status: Clickable = Clickable((By.ID, 'setStatus'), f"Status {DROPDOWN}")
configure: Clickable = Clickable((By.ID, "configureLinkGen"), f"Configure {BUTTON}")
reports: Clickable = Clickable((By.ID, 'Reports'), f"Reports {BUTTON}")
class addmenu(object):
employee: Clickable = Clickable((By.ID, f'Employee'), f"Add->Employee {BUTTON}")
Пример ссылки на данный элемент в модуле ec.
import ec
# navigation helper method for a given page
def do_hrfile_nav(self):
self.clickbutton(ec.EcHR.sidemenu.hrfile)
Это прекрасно работает;Я могу отслеживать использование каждого объекта, в то же время предоставляя контекст читабельности того, что это за объект.
self.clickbutton(ec.EcHR.sidemenu.hrfile)
сообщает читателю, что мы нажимаем на элемент бокового меню hrfile
на странице HR
.Это важно отличать от ec.EcHR.hrfile
, который представляет собой другой набор объектов.
Мой вопрос: Есть ли лучший / более чистый способ организации этих объектов? Я использую классыэто никогда не будет создано.(что почему-то неловко по причинам, которые я не могу сформулировать). Эти классы действуют исключительно как средство, чтобы ссылаться на них организованно.Возможно, какой-то легкий объект данных, имеющий классоподобную структуру?(Я слишком много думаю?)