class RegisterStudentPage(PageObject): checkboxes = MultiPageElement(xpath="//input[@type='checkbox']") checked_checkboxes = MultiPageElement(css="input:checked[type='checkbox']") submit_button = PageElement(css="input[type='submit']") success_message_element = PageElement(css=".info") finished_course_message_element = PageElement(css=".finished-course-message") not_started_course_message_element = PageElement(css=".not-started-course-message") @property def not_started_course_message(self): return self.not_started_course_message_element.text @property def finished_course_message(self): return self.finished_course_message_element.text @property def success_message(self): return self.success_message_element.text @property def checked_students(self): checked_students = [checked_checkbox.find_element_by_xpath("..").text for checked_checkbox in self.checked_checkboxes] return checked_students def toggle_check(self, student): # this is tied to structure of checkboxes generated by django # <label for="id_students_0"> # <input id="id_students_0" name="students" value="1" type="checkbox"> john # </label> student_chekboxes = [checkbox for checkbox in self.checkboxes if checkbox.find_element_by_xpath("..").text == student] assert len(student_chekboxes) > 0, "student not found in checkboxes" assert len(student_chekboxes) == 1, "many students found in checkboxes" student_chekbox = student_chekboxes[0] student_chekbox.click()
class OzonSearchPage(PageObject): min_price = PageElement( xpath='//input[@data-test-id="range-filter-from-input"]') max_price = PageElement( xpath='//input[@data-test-id="range-filter-to-input"]') apply_filter = PageElement(xpath='//button[contains(text(), "Показать")]') products_prices = MultiPageElement( xpath='//span[@class="price-number"]/span') results_links = MultiPageElement(xpath='//a[@class="text-link name-link"]') categories = MultiPageElement(xpath='//a[@class="category-link"]') filter_new_products = PageElement( xpath='//span[contains(text(), "Новинки")]') filter_popular_products = PageElement( xpath='//span[contains(text(), "Бестселлеры")]') filter_low_price_products = PageElement( xpath='//span[contains(text(), "Уцененный товар")]') filter_high_rate_products = PageElement( xpath='//span[contains(text(), "Высокий рейтинг")]') def __init__(self, web_driver, uri=''): super().__init__(web_driver, uri) web_driver.execute_script( 'window.scrollTo(0, document.body.scrollHeight);') def has_results(self): return len(self.results_links) > 0 def go_back(self): self.w.back() wait_page_loaded(self.w) def wait_page_loaded(self): wait_page_loaded(self.w)
class GamePage(PageObject): reload_game = PageElement(id_='reload') add_player_link = PageElement(id_='add_player') add_company_link = PageElement(id_='add_company') display_net_worth_link = PageElement(id_='display-net-worth') undo = PageElement(id_='undo') redo = PageElement(id_='redo') bank_cash = PageElement(css="#bank #cash") bank_pool = MultiPageElement(css="#bank .pool") pool_shares_pay = PageElement(name='pool-shares-pay') ipo_shares_pay = PageElement(name='ipo-shares-pay') treasury_shares_pay = PageElement(name='treasury-shares-pay') log = MultiPageElement(css="#log div.entry") player_name_list = MultiPageElement(css="div.player div.name") _player_list = MultiPageElement(class_name="player") _company_list = MultiPageElement(class_name="company") def get_players(self): res = [] for row in self._player_list: res.append(Player(row, self.w)) return res def get_companies(self): res = [] for row in self._company_list: res.append(Company(row, self.w)) return res
class ShareForm(PageObject): shares = PageElement(name='shares') company = MultiPageElement(css='label.company-label') source = MultiPageElement(css='label.source') transfer_button = PageElement(name='transfer-share') buy_share = PageElement(id_='action-buy') sell_share = PageElement(id_='action-sell') action = PageElement(id_='action-text') def select_company(self, name): # pragma: no cover for label in self.company: if label.get_attribute('for') == 'company-{}'.format(name): label.click() break else: # pragma: no cover raise AssertionError( 'No company called {} found in share list'.format(name)) def select_source(self, name): # pragma: no cover for label in self.source: if label.get_attribute('for') == 'source-{}'.format(name): label.click() break else: raise AssertionError('Could not select {}'.format(name))
class Homepage(PageObject): stylesheets = MultiPageElement(tag_name='link') scripts = MultiPageElement(tag_name='script') start_button = PageElement(name='new_game') bank_cash = PageElement(name='cash') app_root = PageElement(tag_name='app-root') pool_shares_pay = PageElement(name='pool-shares-pay') ipo_shares_pay = PageElement(name='ipo-shares-pay') treasury_shares_pay = PageElement(name='treasury-shares-pay')
class TransferForm(PageObject): amount = PageElement(name='amount') target = MultiPageElement(name='target') labels = MultiPageElement(css='label.transfer') transfer_button = PageElement(name='transfer') def select_target(self, name): # pragma: no cover for radio in self.target: if radio.get_attribute('id') == 'target-{}'.format(name): radio.click() break else: self.fail('Could not find {} in the transfer form'.format(name))
class HomePage(PageObject): http_homepage_header_hyperlinks = MultiPageElement( xpath="//div[@class='menu-header-menu-container']//li/a") subject_link = PageElement( xpath= "//div[@class='menu-header-menu-container']//li/a[contains(text(),'Subjects')]" ) subject_article_sections = MultiPageElement( xpath="//a[@ng-if='data.section.name']") subject_article_section_articlelink = MultiPageElement( xpath="//a[@ng-if='data.link']") load_more = PageElement(xpath="//button[@class='clear centre ng-scope']") login_button = PageElement(xpath="//button[@class='button clear login']") login_username = PageElement(id_='username') login_password = PageElement(id_='password') logout_button = PageElement(xpath="//button[contains(text(),'Logout')]") subscribe_button = PageElement(xpath="//button[@class='button subscribe']") latest_edition = PageElement( xpath="//a[contains(text(),'Latest Edition')]") subscriber_exclusive = PageElement( xpath="//h2[text()='Subscriber Exclusive']") arts = PageElement(xpath="//a[text()='Arts']") list_of_article_under_section = MultiPageElement( xpath="//div[@tls-scroll='scrollState']//div[@class='padded']//a") to_read_full_article_text = PageElement( xpath= "//div[@class='form-subtitle futura' and contains(text(),'To read')]") search_button = PageElement(xpath="//input[@type='search']") search_result_count = PageElement( xpath="//span[@ng-bind='results.count_total']") subscriber_login = PageElement( xpath="//input[@type='submit' and @value='Login']") subscribe_to_times_literary_supplement = PageElement( xpath="// h2[text() = 'Subscribe to The Times Literary Supplement']") list_of_editor_section = MultiPageElement( xpath= "//div[@class='editions-bottom fadeIn ng-scope']//h3[@class='futura']") go_to_top_button = PageElement(xpath="//a[@id='return-to-top']") def return_single_article(self): return self.list_of_article_under_section[1] def return_single_editor_section(self): return self.list_of_editor_section[0] def return_single_section(self): return self.subject_article_sections[0] def return_single_article_under_subjects(self): return self.subject_article_section_articlelink[0]
class ProductsListPage(PageObject): results = MultiPageElement( xpath='//div[@class="n-snippet-cell2__title"]/a') def results_count(self): return len(self.results)
class Entity(PageObject): _name = PageElement(css=".name", context=True) _cash = PageElement(css=".cash", context=True) _detail = PageElement(css=".detail", context=True) _shares = MultiPageElement(css=".share", context=True) _summary = PageElement(css=".row", context=True) def __init__(self, root, *args, **kwargs): super(Entity, self).__init__(*args, **kwargs) self.root = root def __getitem__(self, key): if key == 'row': return self.root elif key == 'elem' or key == 'summary': return self._summary(self.root) elif key == 'name': return self._name(self.root) elif key == 'cash': return self._cash(self.root) elif key == 'shares': return self._shares(self.root) elif key == 'detail': return self._detail(self.root) else: # pragma: no cover raise KeyError
class HomePage(StorePage): products = MultiPageElement(class_name="product-container") btn_sign_in = PageElement(css="a.login") url = "http://automationpractice.com/index.php" def goToLogin(self): self.btn_sign_in.click()
class ListLinkDatePage(PageObject): li_dates = MultiPageElement(css=".date--item a") @property def dates(self): dates = map(lambda li_date: li_date.text, self.li_dates) return dates
class CourseListPage(PageObject): links_courses = MultiPageElement(css=".courses a") @property def course_list(self): course_list = map(lambda link_course: link_course.text, self.links_courses) return course_list
class ListStudentPage(PageObject): # ul > li li_students = MultiPageElement(class_name="registered--item") @property def students_registered(self): students_registered = map(lambda li_student: li_student.text, self.li_students) return students_registered
class TaskColumn(PageObject): def __init__(self, driver): self.tasks = MultiPageElement(css=self.selector) PageObject.__init__(self, driver) def get_tasks(self, wait=False): if not wait: wait_task(self.w, self.selector) return [Task(element) for element in self.tasks.find(self.w)]
class EditCompanyPage(PageObject): header = PageElement(id_='title') name = PageElement(name='name') shares = PageElement(name='share_count') text_color = MultiPageElement(name='text-color-select') background_color = MultiPageElement(name='background-color-select') edit_button = PageElement(tag_name='button') preview = PageElement(id_='preview') error_list = PageElement(css='.errorlist') back = PageElement(id_='back') def select_text_color(self, color): for radio in self.text_color: if radio.get_attribute('value') == color: radio.click() break def select_background_color(self, color): for radio in self.background_color: if radio.get_attribute('value') == color: radio.click() break
class LoginPage(PageObject): select_language = PageElement(css='div.lang_selected') languages = MultiPageElement(css='#lang_menu_dropdown td.lang_name') main_logo = PageElement(css='div.main_logo') input_username = PageElement(id_='username') input_password = PageElement(id_='password') btn_forgot_password = PageElement(css='#login_form a') warning_message = PageElement(css='#login_form div div div span') btn_sign_in = PageElement(css='#login_form button') btn_create_account = PageElement(css='#login_form > span') btn_reseller_portal = PageElement(css='div > a')
class GearbestSearchPage(PageObject): results = MultiPageElement(class_name='gbGoodsItem_outBox')
class Todo(PageObject): tasks = MultiPageElement(css='.terminal-timeline.todo .terminal-card') def get_tasks(self): return [task(element) for element in self.tasks]
class ErrorPage(PageObject): errors = MultiPageElement(css=".error") close = PageElement(css='.close')
class BaiduResultPage(PageObject): keywords = PageElement(id_='kw') search = PageElement(id_='su') records = MultiPageElement(tag_name='h3')
def test_multi_page_element(self): elem = MultiPageElement(id_='bar') assert elem.locator == (By.ID, 'bar')
class YandexSearchResultsPage(YandexMainPage): results = MultiPageElement(xpath='//a[contains(@class, "organic__url")]') def results_count(self): return len(self.results)
class AliExpressSearchPage(PageObject): search_field = PageElement(id_='search-key') search_btn = PageElement(class_name='search-button') results = MultiPageElement(xpath='//*[contains(@class, "history-item product")]')
class TestPage(PageObject): test_elems = MultiPageElement(css='foo')
class SearchResultsPage(PageObject): search_results = MultiPageElement(xpath='//div[@class="photo"]') popup_close = PageElement( xpath='//div[@class="header_div"]//a[@class="btn-close1"]') #popup_close = PageElement(xpath='(//a[@class="btn-close1"])[9]') displayed_results_number = PageElement( xpath='//*[@class="listing-progress-text__viewed-count"]') all_results_number = PageElement( xpath='//*[@class="listing-progress-text__all-count"]') no_results_found = PageElement(xpath='(//div[@class="no-products"])[2]') first_result = PageElement(xpath='(//div[@class="photo"])[1]') add_to_cart_button = PageElement(xpath='(//div[@class="add-cart"])[1]' ) # first result "Add to cart" button first_available_size = PageElement( xpath= '((//div[@class="photo"])[1]//li[@class="size-type-cm active"]//ul[@class="size-list"]//li/label[not(contains(@class,"disabled"))])[1]' ) cart_counter = PageElement(xpath='//span[@class="count-contents"]') open_cart_button = PageElement(xpath='(//span[@class="bg"])[1]') all_sums = MultiPageElement(xpath='//div[@class="sum"]') sorting_dropdown = PageElement( xpath='//div[@class="sort-box"]//span[text()="Популярное"]') sort_by_price_asc_b = PageElement( xpath='//span[text()="По возрастанию цены"]') def close_popup(self): if self.popup_close: self.popup_close.click() else: pass def __init__(self, web_driver, uri=''): super().__init__(web_driver, uri) self.close_popup() sleep(2) def add_to_cart(self): action = ActionChains(self.w) action.move_to_element(self.first_result).click( self.add_to_cart_button).perform() sleep(1) self.first_available_size.click() sleep(1) def open_cart(self): self.open_cart_button.click() return ChartPage(self.w) def find_all_prices(self): prices = self.w.find_elements_by_xpath('//div[@class="sum"]') price_list = [] for i in range(len(prices)): price_list.append(prices[i].text) return price_list def sort_by_price_asc(self): action = ActionChains(self.w) action.move_to_element(self.sorting_dropdown).click( self.sort_by_price_asc_b).perform() sleep(2)
class PageElements(PageObject): bmw_filter = PageElement(xpath="//form[contains(@class, 'form')]/div/ul/li[6]") cars = MultiPageElement(class_name='car-name-top')
class Locator(PageObject, KSEDLocators): # Форма авторизации username_text = PageElement(name=KSEDLocators.username_text) # Логин password_text = PageElement(name=KSEDLocators.password_text) # Пароль LogIn_button = PageElement( xpath=KSEDLocators.LogIn_button) # Кнопка "Войти" # *******СТРОКА МЕНЮ******* ksed = PageElement(xpath=KSEDLocators.ksed) #xpath # КСЭД barcode_search = PageElement( id_=KSEDLocators.barcode_search) #id # Поиск по ШК search_bc = PageElement( xpath=KSEDLocators.search_bc) # Строка поиска по ШК more_menu = PageElement(id_=KSEDLocators.more_menu) # Меню "Ещё" ksed_in_more_m = PageElement( id_=KSEDLocators.ksed_in_more_m) # КСЭД в меню "Ещё" Company_dir = PageElement( xpath=KSEDLocators.Company_dir) # Справочник организации admin = PageElement(xpath=KSEDLocators.admin) # Администрирование transfer = PageElement(xpath=KSEDLocators.transfer) # Передача дел arm_arh = PageElement(xpath=KSEDLocators.arm_arh) # АРМ Архивное дело verify = PageElement(xpath=KSEDLocators.verify) # Верификация scanner = PageElement(xpath=KSEDLocators.scanner) # Работа со сканером ШК notification = PageElement(id_=KSEDLocators.notification) # Уведомления notificationProtokol = PageElement( xpath=KSEDLocators.notificationProtokol ) # Первое в списке уведомление о протоколе notificationFirst = PageElement(xpath=KSEDLocators.notificationFirst ) # id # Уведомление первое в списке # *******МЕНЮ ПОЛЬЗОВАТЕЛЯ******* user_menu = PageElement(id_=KSEDLocators.user_menu) # Меню пользователя USER_LOGOUT = PageElement(id_=KSEDLocators.USER_LOGOUT) # Выход из системы my_profile = PageElement( xpath=KSEDLocators.my_profile) # Пункт меню "Мой профиль" fieldlabel = PageElement(xpath=KSEDLocators.fieldlabel ) # Должность в области краткой информации btnEdit_profile = PageElement( xpath=KSEDLocators.btnEdit_profile) # Кнопка "Изменить профиль" inputPosition = PageElement( xpath=KSEDLocators.inputPosition) # Поле ввода должности logic_ESM = PageElement( xpath=KSEDLocators.logic_ESM) # Пункт меню "Логика ECM. Мой профиль" autoAnswerText = PageElement(name=KSEDLocators.autoAnswerText ) # Текст автоответа (Меня нет в офисе) btnCancelAbsence = PageElement( xpath=KSEDLocators.btnCancelAbsence) # Кнопка "Отменить отсутствие" btnYes = PageElement( xpath=KSEDLocators.btnYes) # Кнопка "Да" (отменить отсутствие) edit_password = PageElement( xpath=KSEDLocators.edit_password) # Пункт меню "Изменить пароль" inputOldPassword = PageElement( xpath=KSEDLocators.inputOldPassword) # Введите старый пароль inputNewPassword1 = PageElement( xpath=KSEDLocators.inputNewPassword1) # Введите старый пароль inputNewPassword2 = PageElement( xpath=KSEDLocators.inputNewPassword2) # Введите старый пароль btnOKchange = PageElement( xpath=KSEDLocators.btnOKchange) # Кнопка "Изменить пароль" # *******ЛЕВАЯ ЧАСТЬ СТРАНИЦЫ (Кнопка "Создать" и разделы)******* newDoc_button = PageElement(xpath=KSEDLocators.newDoc_button) # "Создать" protocol = PageElement(xpath=KSEDLocators.protocol) # Протокол rd = PageElement(xpath=KSEDLocators.rd) # РД reestr = PageElement(xpath=KSEDLocators.reestr) # Реестр poruchenie = PageElement(xpath=KSEDLocators.poruchenie) # Поручение resolution = PageElement(xpath=KSEDLocators.resolution) # Резолюция SZ = PageElement(xpath=KSEDLocators.SZ) # Служебная записка proizvDoc = PageElement( xpath=KSEDLocators.proizvDoc) # Произвольный документ paket_vh = PageElement(xpath=KSEDLocators.paket_vh) #Пакет Вх. кор. vhDoc = PageElement(xpath=KSEDLocators.vhDoc) # Входящий документ ishDoc = PageElement(xpath=KSEDLocators.ishDoc) # Исходящий документ # РАЗДЕЛЫ myWork = PageElement(xpath=KSEDLocators.myWork) # Моя работа expedition = PageElement(xpath=KSEDLocators.expedition) # Экспедиция navigation = PageElement(xpath=KSEDLocators.navigation) # Навигатор allur = PageElement(xpath=KSEDLocators.allur) # Отчеты workReg = PageElement(xpath=KSEDLocators.workReg) # Работа регистратора medo = PageElement(xpath=KSEDLocators.medo) # МЭДО mySearch = PageElement( xpath=KSEDLocators.mySearch) # Мои поисковые запросы poiskzapr = PageElement(xpath=KSEDLocators.poiskzapr) # Поисковые запросы myPoiskZapr = PageElement( xpath=KSEDLocators.myPoiskZapr) # Поисковые запросы ControlZapr = PageElement( xpath=KSEDLocators.ControlZapr) # Упарвление поисковыми запросами # ОБЛАСТЬ ПРОСМОТРА (КСЭД) oblProsm = PageElement(xpath=KSEDLocators.oblProsm) # Область просмотра oneDocInList = PageElement( xpath=KSEDLocators.oneDocInList) # Первый документ в списке nineDocInList = PageElement( xpath=KSEDLocators.nineDocInList) # Девятый документ в списке subordinate = MultiPageElement( xpath=KSEDLocators.subordinate) # "+" раскрытие подчиненные документы oneSubordInList = PageElement(xpath=KSEDLocators.oneSubordInList ) # Первая ссылка на подчиненный документ ActionTab = PageElement( xpath=KSEDLocators.ActionTab) # Кнопка "Действия с выбранными" chBinOnl = PageElement(xpath=KSEDLocators.chBinOnl) # Моя работа WorkImmid = PageElement( xpath=KSEDLocators.WorkImmid) # xpath # Моя работа - срочные connectedDoc = PageElement( xpath=KSEDLocators.connectedDoc) # xpath # связанные документы # ОТЧЕТЫ section_allur = PageElement( xpath=KSEDLocators.section_allur) # Раздел "Отчеты" node_Logs = PageElement(xpath=KSEDLocators.node_Logs) # "Журналы" node_Statis = PageElement( xpath=KSEDLocators.node_Statis) # "Статистические отчеты" edsBykindStat = PageElement( xpath=KSEDLocators.edsBykindStat) # Отчет "Сводка по видам документов" node_ispDisp = PageElement(xpath=KSEDLocators.node_ispDisp) # logs_incDoc = PageElement(xpath=KSEDLocators.logs_incDoc) incomingRegJournal = PageElement( xpath=KSEDLocators.incomingRegJournal ) # Отчет "Журнал регистрации входящих документов" logs_outDoc = PageElement(xpath=KSEDLocators.logs_outDoc) outgoingRegistration = PageElement( xpath=KSEDLocators.outgoingRegistration ) # Отчет "Журнал регистрации исходящих документов" logs_raspDoc = PageElement(xpath=KSEDLocators.logs_raspDoc) ordRegJournal = PageElement( xpath=KSEDLocators.ordRegJournal ) # Отчет "Журнал регистрации Распорядительных документов" logs_sluDoc = PageElement(xpath=KSEDLocators.logs_sluDoc) internalRegJournal = PageElement( xpath=KSEDLocators.internalRegJournal ) # Отчет "Журнал регистрации служебных записок" stat_specDoc = PageElement(xpath=KSEDLocators.stat_specDoc) stat_temDoc = PageElement(xpath=KSEDLocators.stat_temDoc) edsBySubjectStat = PageElement(xpath=KSEDLocators.edsBySubjectStat ) # Отчет "Сводка по тематикам документов" stat_temDocO = PageElement(xpath=KSEDLocators.stat_temDocO) edsBySubjectStatO = PageElement( xpath=KSEDLocators.edsBySubjectStatO ) # Отчет "Сводка по тематикам документов(объед)" stat_tipDoc = PageElement(xpath=KSEDLocators.stat_tipDoc) edByTypeStat = PageElement( xpath=KSEDLocators.edByTypeStat) # Отчет "Сводка по типам документов" allu_ispIncDoc = PageElement(xpath=KSEDLocators.allu_ispIncDoc) allu_raspDoc = PageElement(xpath=KSEDLocators.allu_raspDoc) allu_sluDoc = PageElement(xpath=KSEDLocators.allu_sluDoc) allu_ispDis = PageElement(xpath=KSEDLocators.allu_ispDis) allu_ispDispA = PageElement(xpath=KSEDLocators.allu_ispDispA) allu_NispDI = PageElement(xpath=KSEDLocators.allu_NispDI) allu_NispDIrg = PageElement(xpath=KSEDLocators.allu_NispDIrg) allu_istS = PageElement(xpath=KSEDLocators.allu_istS) allu_narS = PageElement(xpath=KSEDLocators.allu_narS) allu_prodIsp = PageElement(xpath=KSEDLocators.allu_prodIsp) allu_prodPodr = PageElement(xpath=KSEDLocators.allu_prodPodr) allu_ReesContr = PageElement(xpath=KSEDLocators.allu_ReesContr) allu_ReesContrN = PageElement(xpath=KSEDLocators.allu_ReesContrN) allu_ReesContrF = PageElement(xpath=KSEDLocators.allu_ReesContrF) allu_SostIspR = PageElement(xpath=KSEDLocators.allu_SostIspR) # *******РАБОТА С ДОКУМЕНТАМИ******* # ОБЩИЕ АТРИБУТЫ #(форма создания документа) title = PageElement(name=KSEDLocators.title) # Заголовок category_doc = PageElement( xpath=KSEDLocators.category_doc) # Категория документа doc_type = PageElement( xpath=KSEDLocators.doc_type) # Вид документа(кнопка выбора) doc_typeInp = PageElement( xpath=KSEDLocators.doc_typeInp) # Вид документа(поле ввода) btnOKDT = PageElement( xpath=KSEDLocators.btnOKDT) # Вид документа (кнопка "ОК") podpisant = PageElement(xpath=KSEDLocators.podpisant) # Подписант(ы) sposob_dost = PageElement( xpath=KSEDLocators.sposob_dost) # Способ доставки btnCreateDoc = PageElement( xpath=KSEDLocators.btnCreateDoc) # Кнопка "Создать" adresat = PageElement(xpath=KSEDLocators.adresat) # Адресат korrespondent = PageElement( xpath=KSEDLocators.korrespondent) # Корреспондент # (карточка документа) attachments = PageElement( xpath=KSEDLocators.attachments) # # Переход во вкладку "Вложения" vlozheniya = PageElement( xpath=KSEDLocators.vlozheniya) # Вложения (раскрытие раздела) osnSvedeniya = PageElement(xpath=KSEDLocators.osnSvedeniya ) # Основные сведения (раскрытие раздела) printForm = PageElement( xpath=KSEDLocators.printForm) # Печатные формы (раскрытие раздела) printBarCode = PageElement( xpath=KSEDLocators.printBarCode) #Печатная форма штрих кода документа btnPrintInPrintForm = PageElement(id_=KSEDLocators.btnPrintInPrintForm ) # Кнопка печати в окне печатной формы btnOKpodpis = PageElement( xpath=KSEDLocators.btnOKpodpis) # Кнопка ОК подтверждение подписания mode = PageElement( xpath=KSEDLocators.mode) # Переключение в двупанельный вид fileUpload = PageElement(xpath=KSEDLocators.fileUpload) # Загрузить файл fileUpload2 = PageElement( xpath=KSEDLocators.fileUpload2) # Загрузить файл в поручении fileUpload3 = PageElement( xpath=KSEDLocators.fileUpload3) # Загрузить файл в поручении files = PageElement(xpath=KSEDLocators.files) # Выберите файлы show = PageElement(xpath=KSEDLocators.show) # Показать общую карточка show_list = PageElement( xpath=KSEDLocators.show_list) # Показать ввиде списка dropBtn = PageElement( xpath=KSEDLocators.dropBtn) # Кнопка выпадающего списка resultSogl = PageElement( xpath=KSEDLocators.resultSogl) # результат согласования btnPrint = PageElement( xpath=KSEDLocators.btnPrint ) # Кнопка печати в форме предварительного просмотра вложения soglasovanieWkladka = PageElement( xpath=KSEDLocators.soglasovanieWkladka) # Вкладка "Согласование" soglasovanieWkladka2 = PageElement( xpath=KSEDLocators.soglasovanieWkladka2) # Вкладка "Согласование" createRuleBtn = PageElement( xpath=KSEDLocators.createRuleBtn) # Кнопка "Создать маршрут" createRuleIndivid = PageElement( xpath=KSEDLocators.createRuleIndivid) # "Индивидуальный маршрут" addEtap = PageElement(xpath=KSEDLocators.addEtap) # Кнопка "Добавить этап" tipeEtap = PageElement(xpath=KSEDLocators.tipeEtap) # "Вид этапа" soglasuychie = PageElement( xpath=KSEDLocators.soglasuychie) # "Согласующие" btnOKformSogl = PageElement( xpath=KSEDLocators.btnOKformSogl ) # Кнопка "ОК" на форме добавления этапа согласования btnTree = PageElement(xpath=KSEDLocators.btnTree) # Кнопка ... btnSelection3 = PageElement(xpath=KSEDLocators.btnSelection3) # 3 выбор punkti = PageElement(xpath=KSEDLocators.punkti) # Вкладка "Пункты" punktiBtn = PageElement(xpath=KSEDLocators.punktiBtn) # Кнопка "Пункты" punktPoruch = PageElement( xpath=KSEDLocators.punktPoruch) # Пункт/Поручение textPoruch = PageElement(xpath=KSEDLocators.textPoruch) # Текст поручения tipPoruch = PageElement(xpath=KSEDLocators.tipPoruch) # Тип поручения otvetstv_ispolnVpunktah = PageElement( xpath=KSEDLocators.otvetstv_ispolnVpunktah ) # Ответственный исполнитель в пунктах карточки документа srokIspoln = PageElement( xpath=KSEDLocators.srokIspoln) # Срок исполнения (среднее знач) btnOKform = PageElement(xpath=KSEDLocators.btnOKform) # Кнопка ОК на форме sendFor_approval = PageElement(xpath=KSEDLocators.sendFor_approval ) # Действие "Направить на согласование" sendFor_podpis = PageElement(xpath=KSEDLocators.sendFor_podpis ) # Действие "Направить на подписание" sendFor_execution = PageElement(xpath=KSEDLocators.sendFor_execution ) # Действие "Направить на исполнение" btnOKnaprNaIspoln = PageElement( xpath=KSEDLocators.btnOKnaprNaIspoln ) # Кнопка "ОК" на форме подтверждения действия "Направить на исполнение" confirm = PageElement( xpath=KSEDLocators.confirm) # Подтверждение согласования confirm2 = PageElement( xpath=KSEDLocators.confirm2) # Подтверждение согласования confirm_3 = PageElement( xpath=KSEDLocators.confirm_3) # Подтверждение согласования confirm_4 = PageElement( xpath=KSEDLocators.confirm_4) # Подтверждение согласования confirm_5 = PageElement( xpath=KSEDLocators.confirm_5) # Подтверждения выбора status_Doc = PageElement( xpath=KSEDLocators.status_Doc ) # Статус документа во вкладке (Основные сведения) #"Отправить отчет" actionSendAllere = PageElement( xpath=KSEDLocators.actionSendAllere) # "Отправить отчет" действие btnSend = PageElement(xpath=KSEDLocators.btnSend) # Кнопка "Отправить" textAllur = PageElement( xpath=KSEDLocators.textAllur) # Текстовое поле "Текст отчета" btnAddSvyz = PageElement( xpath=KSEDLocators.btnAddSvyz) # Кнопка добавления связи "..." searchDoc = PageElement( xpath=KSEDLocators.searchDoc) # Строка поиска в форме подбора oneListEl = PageElement( xpath=KSEDLocators.oneListEl) # Первый элемент в списке справочника btnOK = PageElement( xpath=KSEDLocators.btnOK) # Кнопка "ОК" в форме подбора # (панель согласования) APPROVED_button = PageElement( xpath=KSEDLocators.APPROVED_button) # Кнопка "Согласовать" APPROVED_WITH_REMARK_button = PageElement( xpath=KSEDLocators.APPROVED_WITH_REMARK_button ) # Кнопка "Согласовать с комментариями" REJECTED_button = PageElement( xpath=KSEDLocators.REJECTED_button) # Кнопка "Отклонить" internal_approval = PageElement(xpath=KSEDLocators.internal_approval ) # Кнопка "Внутреннее согласование" prop_bpm_comment = PageElement( name=KSEDLocators.prop_bpm_comment) # Поле комментария apply_button_button = PageElement( xpath=KSEDLocators.apply_button_button ) # Кнопка "ОК" при вынесении решения согласования apply_button_button2 = PageElement( xpath=KSEDLocators.apply_button_button2 ) # Кнопка "ОК" при вынесении решения согласования SIGNED_button = PageElement( xpath=KSEDLocators.SIGNED_button) # Кнопка "Подписать" # # ПРОТОКОЛ # #(форма создания документа) # addEl = PageElement(xpath=KSEDLocators.addEl) # Вид документа(Протокол совещания рабочей группы) # addEl2 = PageElement(xpath=KSEDLocators.addEl2) #Вид документа "Служебная записка" # РАСПОРЯДИТЕЛЬНЫЙ ДОКУМЕНТ #(форма создания документа) addEl = PageElement(xpath=KSEDLocators.addEl ) # Вид документа(Протокол совещания рабочей группы) addEl2 = PageElement( xpath=KSEDLocators.addEl2) #Вид документа "Служебная записка" preambula = PageElement(xpath=KSEDLocators.preambula) # Преамбула obcontrol = PageElement(xpath=KSEDLocators.obcontrol) # Общий контроль wid_doc = PageElement(xpath=KSEDLocators.wid_doc) # Вид документа (в РД) wid_doc_rasp = PageElement( xpath=KSEDLocators.wid_doc_rasp) # Вид документа РД (Распоряжение) addPunkt = PageElement( xpath=KSEDLocators.addPunkt) # Кнопка "Добавить пункт" textPunktaRD = PageElement( name=KSEDLocators.textPunktaRD) # Текст пункта РД otvetstv_ispolnVpunktahRD = PageElement( xpath=KSEDLocators.otvetstv_ispolnVpunktahRD ) # Ответственный исполнитель в пункте РД rassilka = PageElement(xpath=KSEDLocators.rassilka) # Вкладка "Рассылка" btnVipolnit = PageElement( xpath=KSEDLocators.btnVipolnit) # Кнопка "Выполнить..." punktBtnVipolnit = PageElement( xpath=KSEDLocators.punktBtnVipolnit) # Создать и заполнить # ПРОТОКОЛ #(форма создания документа) date = PageElement(xpath=KSEDLocators.date) # Дата совещания category = PageElement(xpath=KSEDLocators.category) # Категория Chairman = PageElement(xpath=KSEDLocators.Chairman) # Председатель Secretary = PageElement(xpath=KSEDLocators.Secretary) # Секретарь person_present = PageElement( xpath=KSEDLocators.person_present) # Присутствовали #РЕЕСТР #(форма создания документа) vid_reestra = PageElement(xpath=KSEDLocators.vid_reestra) # Вид реестра vid_reestraPR = PageElement( xpath=KSEDLocators.vid_reestraPR) # Вид реестра (Передачи на рег..) vid_reestraPP = PageElement( xpath=KSEDLocators.vid_reestraPP) # Вид реестра (Приема/передачи) btnCreateChern = PageElement( xpath=KSEDLocators.btnCreateChern) # Кнопка "Создать черновик" btnCreateSend = PageElement( xpath=KSEDLocators.btnCreateSend) # Кнопка "Создать и отправить" inpDoc = PageElement(xpath=KSEDLocators.inpDoc) # Поле "Документы" poluchatel = PageElement( xpath=KSEDLocators.poluchatel) # Поле "Получатель" # СЛУЖЕБНАЯ ЗАПИСКА #(форма создания документа) adresati = PageElement(xpath=KSEDLocators.adresati) # Адресаты podpisanti = PageElement(xpath=KSEDLocators.podpisanti) # Подписанты # ПРОИЗВОЛЬНЫЙ ДОКУМЕНТ #(форма создания документа) prorabotka = PageElement(xpath=KSEDLocators.prorabotka) # Проработка chBprorab = PageElement(xpath=KSEDLocators.chBprorab) # чекбокс проработка normokontrol = PageElement( xpath=KSEDLocators.normokontrol) # Нормоконтроль chBnorm = PageElement(xpath=KSEDLocators.chBnorm) # чекбокс Проработка soglasovanie = PageElement(xpath=KSEDLocators.soglasovanie) # Согласование podpisanie = PageElement(xpath=KSEDLocators.podpisanie) # Подписание utverzhdenie = PageElement(xpath=KSEDLocators.utverzhdenie) # Утверждение oznakomlenie = PageElement(xpath=KSEDLocators.oznakomlenie) # Ознакомление # ПОРУЧЕНИЕ # (форма создания документа) tipPoruch = PageElement(xpath=KSEDLocators.tipPoruch) # Тип поручения text_poruch = PageElement(name=KSEDLocators.text_poruch) #Текст поручения otvetstv_ispoln = PageElement( xpath=KSEDLocators.otvetstv_ispoln) # Ответственный исполнитель # ПАКЕТ ВХОДЯЩЕЙ КОРРЕСПОНДЕНЦИИ # ВХОДЯЩИЙ ДОКУМЕНТ #(форма создания документа) ishNumber = PageElement(name=KSEDLocators.ishNumber) # Исходящий номер dateIS = PageElement(xpath=KSEDLocators.dateIS) # Дата исходящего # ИСХОДЯЩИЙ ДОКУМЕНТ # (форма создания документа) osnovPodpis = PageElement( name=KSEDLocators.osnovPodpis) # Основание подписания korrespondentISH = PageElement( xpath=KSEDLocators.korrespondentISH) # Корреспондент clickNull = PageElement(xpath=KSEDLocators.clickNull) # КЛИК ВНЕ АТРИБУТОВ #Формы отчетов #Мои поисковые запросы listChange = PageElement( xpath=KSEDLocators.listChange) # Выпадающий список listChangeSZ = PageElement(xpath=KSEDLocators.listChangeSZ ) # Выпадающий список - служебная записка listChangeRD = PageElement( xpath=KSEDLocators.listChangeRD) # Выпадающий список - РД butSave = PageElement(xpath=KSEDLocators.butSave) #Кнопка сохранить nameZap = PageElement(xpath=KSEDLocators.nameZap) #Наименование запроса zaprosToDel = PageElement( xpath=KSEDLocators.zaprosToDel) #созданный запрос butDel = PageElement(xpath=KSEDLocators.butDel) #Кнопка удалить butRed = PageElement(xpath=KSEDLocators.butRed) # Кнопка редактировать butDelAc = PageElement( xpath=KSEDLocators.butDelAc) # Кнопка удалить подтверждение butAct = PageElement( xpath=KSEDLocators.butAct) # Кнопка "Действия с выбранными" butAct_2 = PageElement( xpath=KSEDLocators.butAct_2) # Кнопка "Действия с выбранными" butExp = PageElement(xpath=KSEDLocators.butExp) # Кнопка экспорта butExp_2 = PageElement(xpath=KSEDLocators.butExp_2) # Кнопка экспорта checkBoxFirst = PageElement( xpath=KSEDLocators.checkBoxFirst) # Первый чекбокс в списке butFavorite = PageElement( xpath=KSEDLocators.butFavorite) # Кнопка добавить в избранное butOK = PageElement( xpath=KSEDLocators.butOK) #Кнопка OK добавить в избранное butSelExp = PageElement( xpath=KSEDLocators.butSelExp) # Кнопка экспорта выбранного
class TestPage(PageObject): test_elem = MultiPageElement(css='foo', context=True)
def __init__(self, driver): self.tasks = MultiPageElement(css=self.selector) PageObject.__init__(self, driver)
class BaiduSearchPage(BaiduHomePage): '''百度搜索结果页''' search_nums_text = PageElement(class_name="nums_text") search_tab_item = MultiPageElement(class_name="s-tab-item")