def test_click_menu_link_main(self):
     """
     try to click main link from menu
     """
     LoginService(self.driver).login()
     test_page = BasePage(self.driver)
     test_page.click_menu_link_main()
Пример #2
0
 def test_guest_cant_see_product_in_basket_opened_from_product_page(self, browser):
     link = "http://selenium1py.pythonanywhere.com/ru/"
     page = BasePage(browser, link)
     page.open()
     page1 = BasketPage(browser, link)
     page1.AllProducts()
     page.go_to_look_basket()
     pages = AddInBasket(browser, link)
     pages.AssertIsNotElementPresent()
     page1.AssertTextBasketEmpty()
    def setup(self):
        """
        This fixture holds the common setup steps required to Login to the application
        returns: Home page of the application for authenticated users
        """
        self.webdriver = webdriver.Chrome()
        self.base_page = BasePage(self.webdriver)
        self.home_page = HomePage(self.webdriver)
        self.login_page = Login(self.webdriver)
        self.search_result_page = SearchResultPage(self.webdriver)
        self.valid_credentials = conf_reader.get_user_credentials()
        self.landing_page_hotel = LandingPageHotel(self.webdriver)
        self.home_page.open_login_page()

        yield
        self.webdriver.quit()
Пример #4
0
def driver_init(request, pytestconfig):
    browser = pytestconfig.getoption("browser")
    url = pytestconfig.getoption("url")
    option = pytestconfig.getoption("option")
    if browser == "chrome":
        if option == "headless":
            options = Options()
            options.headless = True
            driver = BasePage(
                webdriver.Chrome(ChromeDriverManager().install(),
                                 options=options))
        else:
            driver = BasePage(webdriver.Chrome(
                ChromeDriverManager().install()))
    request.cls.driver = driver
    driver.load_url(url)
    yield
    driver.quit()
Пример #5
0
def test_guest_cant_see_product_in_cart_opened_from_main_page(browser):
    link = "http://selenium1py.pythonanywhere.com"
    page = BasePage(browser, link)
    page.open()
    page.go_to_cart()
    cart_page = CartPage(browser, browser.current_url)
    cart_page.check_there_are_no_products_in_cart()
    cart_page.should_be_text_cart_is_empty()


#print('__file__={0:<35} | __name__={1:<20} | __package__={2:<20}'.format(__file__,__name__,str(__package__)))
Пример #6
0
 def setup(self, browser):
     link = "http://selenium1py.pythonanywhere.com/catalogue/coders-at-work_207/"
     email = str(time.time()) + "@fakemail.org"
     password = "******"
     product_page = BasePage(browser, link)
     product_page.open()
     product_page.go_to_login_page()
     page = LoginPage(browser, browser.current_url)
     page.open()
     page.register_new_user(email, password)
     page.should_be_authorized_user()
Пример #7
0
    def __init__(self, browser_name, base_url):
        if browser_name == "chrome":
            self.browser = webdriver.Chrome()
            self.browser.maximize_window()
            self.browser.implicitly_wait(5)

        elif browser_name == "firefox":
            self.browser = webdriver.Firefox()
            self.browser.maximize_window()
            self.browser.implicitly_wait(5)

        else:
            raise pytest.UsageError(
                "--browser_name should be chrome or firefox")

        self.base_url = base_url
        self.base_page = BasePage(self)
        self.feedback_page = FeedbackPage(self)
Пример #8
0
    def test_recruitment_menu(self):
        main_menu = MainMenu(self.driver)
        base_page = BasePage(self.driver)
        main_menu.selectRecruitment()
        header = base_page.get_header()
        self.assertEqual('Candidates', header)

        self.driver.set_window_size(100, 100)
        # If the window is small there is no way to click by standard way
        # self.driver.find_element_by_link_text("Vacancies").click()
        # The only way is to use JS query
        # self.driver.execute_script("document.querySelector('#menu_recruitment_viewJobVacancy').click()")
        # OR the easier way
        self.driver.execute_script(
            'arguments[0].click()',
            self.driver.find_element_by_link_text("Vacancies"))

        header = base_page.get_header()
        self.assertEqual('Vacancies', header)
Пример #9
0
def test_guest_cant_see_product_in_basket_opened_from_product_page(browser):
    link = "http://selenium1py.pythonanywhere.com/en-gb/catalogue/hacking-exposed-wireless_208/"
    page = BasePage(
        browser,
        link)  # Инициализируем класс BasePage чтобы использовать его методы
    page.open(
    )  # Открываем страницу (link передаём, поэтому откроется та страница, ссылку на которую мы передали)
    page.go_to_cart(
    )  # Используем метод (выполняем функцию) go_to_cart (переход в корзину) класса BasePage
    basket = BasketPage(
        browser,
        link)  # Инициализируем класс BasketPage чтобы использовать его методы
    basket.basket_is_empty(
    )  # Проверяем, что корзина пуста, используя метод basket_is_empty класса BasketPage
    basket.basket_is_empty_message(
    )  # Проверяем, что есть сообщение о том, что корзина пуста, используя метод basket_is_empty класса BasketPage
class backyard_login(BasePage):
    def __init__(self, appiumdriver):
        self.base_page = BasePage(appiumdriver)

    def login_to_index_page(self, zhanghao=None):
        #self.base_page.find_bytext('同意并继续')
        time.sleep(1)
        usename = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userName')
        usename.send_keys(zhanghao)
        time.sleep(1)
        pwd = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userPass')
        pwd.send_keys(123456)
        time.sleep(1)
        self.base_page.find_byID_('com.flashexpress.backyard:id/login').click()
        time.sleep(3)
        return self

    def login_success_tishi(self):

        try:
            element = self.base_page.find_bytext('同意并继续')
            if len(element) == 1:
                self.base_page.find_bytext('同意并继续').click()
        except NoSuchElementException:
            print('没有出现  同意并继续按钮 不需要任何操作')

        time.sleep(3)
        #查找输入工号是否这个elements存在,如果存在,证明没有登入成功,返回elements=1
        tishi = self.base_page.return_elements_num('输入工号')
        #如果返回胡elements=1 ,证明找到了,输入工号输入框,此时需要进行登入操作了,否则证明登入成功,只会打印 ‘已登入成功’
        if len(tishi) == 1:
            return True
        else:
            return False
    def setUpClass(cls):
        if cls.browser == BrowserSupported.CHROME:
            options = webdriver.ChromeOptions()
            options.add_argument("--kiosk")
            options.add_argument("allow-running-insecure-content")
            cls.driver = webdriver.Chrome(ChromeDriverManager().install(),
                                          chrome_options=options)
            cls.driver.implicitly_wait(20)

        elif cls.browser == BrowserSupported.FIREFOX:
            options = webdriver.FirefoxOptions()
            options.add_argument("--kiosk")
            options.add_argument("allow-running-insecure-content")
            cls.driver = webdriver.Firefox(
                executable_path=GeckoDriverManager().install(),
                firefox_options=options)
            cls.driver.implicitly_wait(20)

        else:
            assert False, "Unknown Browser {}".format(cls.browser)

        # Setting implicit wait
        cls.driver.implicitly_wait(20)

        # Navigating to sign in page
        cls.get_page_and_load_time(cls)

        # Creating objects for different pages
        cls.bp = BasePage(cls.logger, cls.driver)
        cls.da = DelayedAssert(cls.logger, cls.driver)

        cls.hp = HomePage(cls.logger, cls.driver, cls.bp)
        cls.yop = YourOrdersPage(cls.logger, cls.driver, cls.bp)
        cls.sip = SignInPage(cls.logger, cls.driver, cls.bp)
        cls.yap = YourAccountPage(cls.logger, cls.driver, cls.bp)
        cls.lasp = LoginAndSecurityPage(cls.logger, cls.driver, cls.bp)
        cls.ch = CredentialHelper()
Пример #12
0
 def wait_for_listings(self):
     """ Wait for listings to appear in the main page
     """
     BasePage.wait_until_condition(
         lambda: len(self.listing_titles_sorted()) > 0,
         'No listings are shown')
Пример #13
0
 def wait_for_state_filters(self):
     BasePage.wait_until_condition(lambda: len(self.filter_tabs()) > 0,
                                   'State filters are not visible')
Пример #14
0
 def setup(self):
     basepage = BasePage()
Пример #15
0
class case_fail(BasePage):
    def __init__(self, appium_driver):
        self.base_page = BasePage(appium_driver)

    def to_wodeshenqing_page(self):
        time.sleep(3)
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(5)
        # result = []
        # con = self.base_page.get_context()
        #
        # print('审批页面的context:开始输出')
        # print(con)
        # print('审批页面的context:输出结束')
        '''
        底部导航栏是原生按钮
        如果当前页面在可见审批导航栏页面,需要点击审批按钮,进入审批页面
        点击我的申请按钮
        点击待审批按钮,进入请假申请页面
        页面向上滑动一次
        点击撤销按钮
        点击确认撤销提示的 确定按钮
        点击页面的返回按钮,页面返回至审批页面
        '''

        # 点击审批按钮

        self.base_page.find_bytext('审批').click()
        time.sleep(2)
        # context_now = 'WEBVIEW_com.flashexpress.backyard'
        # self.base_page.to_now_context(context_now)
        # time.sleep(5)
        # print("点击我的申请前:当前的context")
        # #print(self.base_page.get_current_context())
        # print("点击我的申请前:当前的context")
        # 点击我的申请
        self.base_page.by_touchAction_uiautomator2(700, 400)
        # wodeshenqing = self.base_page.find_byxpath('//*[@id="app"]/div/a[2]')
        # wodeshenqing.click()
        time.sleep(1)

    def return_len_jiabanleixing(self):
        time.sleep(1)
        #print(self.base_page.return_current_window_handle())
        #print(self.base_page.return_all_handles())
        # #获取我的申请页面的加班类型文字
        # self.base_page.to_now_context('NATIVE_APP')
        # time.sleep(5)
        self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard')
        time.sleep(5)
        try:
            jiabanleixing = self.base_page.find_byxpath(
                '//*[@id="pageOne"]/div/div[2]/div/div[1]/div/div/div/div[2]/div[2]/div[1]'
            ).text
            print('加班类型:' * 8)
            print(jiabanleixing)
            print('加班类型:' * 8)
        except NoSuchElementException:
            print('没有找到加班类型文字,证明不需要撤销')
            print(NoSuchElementException)
        else:
            time.sleep(2)
            return jiabanleixing

    def return_len_qingjialeixing(self):
        time.sleep(1)
        #print(self.base_page.return_current_window_handle())
        #print(self.base_page.return_all_handles())
        # #获取我的申请页面的请假类型文字
        # self.base_page.to_now_context('NATIVE_APP')
        # time.sleep(5)
        self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard')
        time.sleep(5)
        print('当前context' * 8)
        print(self.base_page.get_current_context())
        print('当前context' * 8)
        self.base_page.to_now_context('NATIVE_APP')
        # self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard')
        time.sleep(5)
        print('当前contexct' * 9)
        print(self.base_page.get_current_context())
        print('当前contexct' * 9)
        page = self.base_page.return_page()
        print(page)
        try:
            qingjia = self.base_page.find_byH5_className(
                'android.view.View', 12)
        except IndexError:
            print(IndexError)
        else:
            # qingjia = self.base_page.find_byxpath('//*[@id="pageOne"]/div/div[2]/div/div[1]/div/div/div/div[2]/div[1]/div[2]')
            print('请假' * 9)
            print(qingjia)
            print('请假' * 9)
            qingjialeixing = qingjia.text
            return qingjialeixing

    def chexiaoshenqing_success(self):
        #  print('点击前待审批页面的context')
        # # print(self.base_page.get_context())
        #  print('点击前待审批页面的context')
        # 各种方法定位不到,只能通过模拟点击事件 [837,378][963,429] 考虑兼容性。进来靠右边一些
        # 点击待审批按钮
        self.base_page.by_touchAction_uiautomator2(x=900, y=400)
        #  print('点击后待审批页面的context')
        # # print(self.base_page.get_context())
        #  print('点击后待审批页面的context')
        time.sleep(3)
        self.base_page.swipeUp()
        time.sleep(2)
        # 无法获取撤销按钮,改用模拟点击事件  [315,1602][765,1740]
        # self.base_page.find_by_H5_name('撤销').click()
        #点击撤销按钮
        self.base_page.by_touchAction_uiautomator2(x=500, y=1700)
        time.sleep(2)
        # 无法获取确定按钮,改用模拟点击事件[546, 1353][1005, 1473]
        # self.base_page.find_by_H5_name('确定').click()
        self.base_page.by_touchAction_uiautomator2(x=900, y=1400)
        time.sleep(2)
        # 点击返回按钮,页面返回到审批页面,但是back方法不可使用,
        # self.base_page.back_()
        # 返回按钮 =[30,54][174,198]
        self.base_page.by_TouchAction_dingwei(100, 150)
        time.sleep(2)
        #self.base_page.to_now_context('NATIVE_APP')
        time.sleep(5)
        # self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard')
        # time.sleep(2)
        # self.base_page.find_byxpath('//*[@id="app"]/div/a[2]').text
        # 点击打卡按钮  [109,1791][160,1857]
        self.base_page.by_touchAction_uiautomator2(130, 1830)
        time.sleep(2)

    def fanhuidao_daka_page(self):
        #点击我的申请页面返回按钮
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(5)
        #[30,54][174,198]
        self.base_page.by_touchAction_uiautomator2(100, 100)
        time.sleep(2)
        #点击打卡按钮  [109,1791][160,1857]
        self.base_page.by_touchAction_uiautomator2(130, 1830)
        time.sleep(2)
Пример #16
0
 def login(self, sign_in_link , login_form, user_data):
     BasePage.login(self, sign_in_link , login_form, user_data, self.acc_settings)
     return self
 def continue_button(self):
     self.click_continue_button()
     return BasePage()
 def test_click_logo_link(self):
     """
     try to click logo link
     """
     test_page = BasePage(self.driver)
     test_page.click_header_logo()
Пример #19
0
 def __init__(self, appium_driver):
     self.base_page = BasePage(appium_driver)
Пример #20
0
 def __init__(self, driver):
     self.driver = driver
     BasePage.__init__(
         self, driver,
         "http://www.automationpractice.com/?controller=search*")
Пример #21
0
 def do_logout(self):
     test_page = BasePage(self.driver)
     test_page.click_logout_link()
Пример #22
0
 def __init__(self, driver):
     BasePage.__init__(self, driver)
     MixinCheckout.__init__(self)
Пример #23
0
 def classSetup(self, oneTimeSetUp):
     self.login_page = LoginPage(self.driver, self.log_level)
     self.base_page = BasePage(self.driver, self.log_level)
class qingjia_chanjianjia_page(BasePage):
    def __init__(self, appiumdriver):
        self.base_page = BasePage(appiumdriver)

    '''产检(带薪)成功申请'''

    def chanjianjia2day_zhengchang_success(self):

        # 点击请假
        try:
            qingjia_button = self.base_page.find_byID_(
                'com.flashexpress.backyard:id/_leave')
        except:
            for i in range(3):
                qingjia_button.click()
                time.sleep(1)
        else:
            qingjia_button.click()
        # 切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        print(cot)
        print('点击请假类型前:')
        # 点击请假类型
        try:
            ele = self.base_page.find_byxpath(
                '//*[@id="app"]/div/div[1]/div[1]/div/input')
        except NoSuchElementException:
            for i in range(3):
                ele.click()
                time.sleep(1)
        else:
            ele.click()
        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        # 点击产检假(带薪)按钮,修改请假类型,只需要更改后边的li的下标
        self.base_page.find_byClassAndTag('date-list', 'li', 0, 12).click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        # 点击开始时间按钮
        # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click()
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1,
                                          0).click()
        print('还没有点击时间21')
        # 点击21号,如果后续日期更换,只更换对于的坐标就可以了
        ''' 位置信息 '''
        x = read_yaml_file('chanjianjia2day_zhengchang_success', 'startTime')
        self.base_page.by_TouchAction_dingwei(x[0], x[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        print('点击了确定按钮')
        time.sleep(3)
        # 点击结束时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2,
                                          0).click()
        time.sleep(2)

        # 点击22号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 = [18,1473][165,1608]
        ''' 位置信息 '''
        y = read_yaml_file('chanjianjia2day_zhengchang_success', 'endTime')
        self.base_page.by_TouchAction_dingwei(y[0], y[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(1)
        # 输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea'
                                    ).send_keys('产检假两天-请假的原因')
        time.sleep(2)
        # 浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        # 点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_TouchAction_dingwei(500, 1750)
        time.sleep(2)
        # 提交的确认弹框
        # 确定按钮 = [540,1245][1017,1365]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        qingjia_button_text = self.base_page.find_byandroid_text('请假').text
        print('打卡页面的 请假按钮文字')
        print(qingjia_button_text)
        print('打卡页面的 请假按钮文字')
        return qingjia_button_text

    '''产检假,超出8天后,会提示:请假余额已用完 只能申请时间今天及今天以后,不限制次数,按天数算'''

    def chanjianjia9day_fail(self):
        time.sleep(2)
        # 点击请假
        qingjia_button = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/_leave')
        qingjia_button.click()
        time.sleep(1)
        # 切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        print(cot)
        print('点击请假类型前:')
        # 点击请假类型
        self.base_page.find_byxpath(
            '//*[@id="app"]/div/div[1]/div[1]/div/input').click()
        time.sleep(1)
        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        # 点击带薪事假(带薪)按钮,修改请假类型,只需要更改后边的li的下标
        self.base_page.find_byClassAndTag('date-list', 'li', 0, 12).click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        # 点击开始时间按钮
        # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click()
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1,
                                          0).click()
        time.sleep(1)
        print('还没有点击时间27')
        # 点击19号,如果后续日期更换,只更换对于的坐标就可以了 [771,1473][918,1608]
        ''' 位置信息 '''
        a = read_yaml_file('chanjianjia9day_fail', 'startTime')
        self.base_page.by_TouchAction_dingwei(a[0], a[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        print('点击了确定按钮')
        time.sleep(3)
        # 点击结束时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2,
                                          0).click()
        time.sleep(2)

        # 点击10.3 号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 = [618,1614][768,1749]
        ''' 位置信息 '''
        b = read_yaml_file('chanjianjia9day_fail', 'endTime')
        self.base_page.by_TouchAction_dingwei(b[0], b[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(1)
        # 输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea'
                                    ).send_keys('产检假8.5天-请假的原因')
        time.sleep(2)
        # 浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        # 点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_TouchAction_dingwei(500, 1750)
        time.sleep(2)
        # 提交的确认弹框
        # 确定按钮 = [540,1245][1017,1365]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        # self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        # 获取点击提交按钮后的提示  请假余额已用完
        a_text = self.base_page.find_byxpath(
            '/html/body/div[2]/div/div[2]/div[1]').text
        print('texttexttexttexttexttexttexttext')
        print(a_text)
        print('texttexttexttexttexttexttexttext')
        # 点击请假余额已用完确认提示
        self.base_page.find_byxpath(
            '/html/body/div[2]/div/div[3]/button[2]').click()
        time.sleep(2)
        # 将context设置成原生app
        # self.base_page.to_now_context('NATIVE_APP')
        # time.sleep(5)
        # 点击返回按钮
        # self.base_page.find_byID_('com.flashexpress.backyard:id/iv_back').click()
        self.base_page.by_touchAction_uiautomator2(100, 100)
        time.sleep(2)
        return a_text
Пример #25
0
class qingjia_daixinshijia_page(BasePage):
    def __init__(self, appiumdriver):
        self.base_page = BasePage(appiumdriver)

    '''带薪事假成功申请'''

    def daixinshijia_zhengchang_success(self):
        # 点击请假
        qingjia_button = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/_leave')
        qingjia_button.click()
        # 切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        print(cot)
        print('点击请假类型前:')
        # 点击请假类型
        self.base_page.find_byxpath(
            '//*[@id="app"]/div/div[1]/div[1]/div/input').click()
        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        # 点击带薪事假(带薪)按钮
        self.base_page.find_byClassAndTag('date-list', 'li', 0, 1).click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        # 点击开始时间按钮
        # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click()
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1,
                                          0).click()
        print('还没有点击时间21')
        # 点击21号,如果后续日期更换,只更换对于的坐标就可以了
        ''' 位置信息 '''
        self.base_page.by_TouchAction_dingwei(100, 1700)
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        print('点击了确定按钮')
        time.sleep(3)
        # 点击结束时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2,
                                          0).click()
        time.sleep(2)

        # 点击22号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 = [18,1473][165,1608]
        ''' 位置信息 '''
        self.base_page.by_TouchAction_dingwei(200, 1700)
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(1)
        # 输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea'
                                    ).send_keys('带薪事假-请假的原因')
        time.sleep(2)
        # 浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        # 点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_TouchAction_dingwei(500, 1750)
        time.sleep(1)
        # 提交的确认弹框
        # 确定按钮 = [540,1245][1017,1365]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(3)
Пример #26
0
 def __init__(self, driver):
     BasePage.__init__(self, driver)
     MixinLax.__init__(self)
Пример #27
0
 def login(self, sign_in_link, login_form, user_data):
     self.attach_screen_to_report(self.driver.current_url)
     BasePage.login(self, sign_in_link, login_form, user_data, self.scrollbar)
     self.attach_screen_to_report(self.driver.current_url)
     return self
"""Test base page logic."""
from common.webdriver_factory import create_driver_instance
from pages.base_page import BasePage

try:
    driver = create_driver_instance('chrome')
    page = BasePage(driver, 5, 'https://demoqa.com/books')
    page.open()
    page.wait_until_loaded()
    page.refresh()
finally:
    driver.close()
Пример #29
0
def test_x3(browser):
    link = "https://yandex.by/"
    page = BasePage(browser, link)
    page.open()
    login_page = LoginPage(browser, browser.current_url)
    login_page.check_buttons_over_search()
 def __init__(self, driver):
     BasePage.__init__(
         self, driver,
         "http://automationpractice.com/index.php?controller=order")
Пример #31
0
class qingjia_nianjia_page(BasePage):


    def __init__(self,appiumdriver):
        self.base_page = BasePage(appiumdriver)

    '''
        年假正常时间范围,可以申请:选择2019/9/20-2019/9/21,如果修改脚本,只修改日期的  位置信息  就行
    '''
    def nianjia_zhengchang_success(self):
        #点击请假
        qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave')
        qingjia_button.click()
        #切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        print(cot)
        print('点击请假类型前:')
        #点击请假类型
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click()
        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        #点击年假(带薪)按钮
        self.base_page.find_byClassAndTag('date-list', 'li', 0, 0).click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        #点击开始时间按钮
        #self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click()
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click()
        print('还没有点击时间26')
        #点击26号,如果后续日期更换,只更换对于的坐标就可以了 [618,1473][768,1608]
        ''' 位置信息 '''
        a = read_yaml_file('nianjia_zhengchang_success','startTime')
        self.base_page.by_TouchAction_dingwei(a[0],a[1])
        time.sleep(3)
        #点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800,1300)
        print('点击了确定按钮')
        time.sleep(3)
        #点击结束时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click()
        time.sleep(2)

        # 点击28号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 = [921,1473][1068,1608]
        ''' 位置信息 '''
        b = read_yaml_file('nianjia_zhengchang_success','endTime')
        self.base_page.by_TouchAction_dingwei(b[0], b[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(1)
        #输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('请假的原因')
        time.sleep(2)
        #浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        #点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_TouchAction_dingwei(500,1750)
        # 提交的确认弹框
        # 确定按钮 = [540,1245][1017,1365]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(3)

    '''
    年假超出时间范围:选择2019/9/18-2019/9/30,如果修改脚本,只修改日期的  位置信息  就行
    10.12 = [921,1755][1068,1890]  (1000,1800)
    9.30 = [168,1614][315,1749]   (250,1700)
    '''
    def nianjia_chaochu_time_tishi(self):
        # 点击请假
        qingjia_button = self.base_page.find_byID_('com.flashexpress.backyard:id/_leave')
        qingjia_button.click()
        time.sleep(1)
        # 切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        print(cot)
        print('点击请假类型前:')
        # 点击请假类型
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[1]/div/input').click()
        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        # 点击年假(带薪)按钮
        try:
            ele = self.base_page.find_byClassAndTag('date-list', 'li', 0, 0)
        except:
            for i in range(3):
                ele.click()
                time.sleep(1)
        else:
            ele.click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        # 点击开始时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click()
        time.sleep(2)
        print('还没有点击时间18')
        ''' 位置信息 '''
        # 点击9.30号,如果后续日期更换,只更换对于的坐标就可以了 [18,1614][165,1749]
        c = read_yaml_file('nianjia_chaochu_time_tishi','startTime')
        self.base_page.by_TouchAction_dingwei(c[0],c[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        print('点击了确定按钮')
        time.sleep(3)
        # 点击结束时间按钮
        self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 2, 0).click()
        time.sleep(2)
        # 点击10.12号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 = [168,1614][315,1749]
        ''' 位置信息 '''
        d = read_yaml_file('nianjia_chaochu_time_tishi', 'endTime')
        self.base_page.by_TouchAction_dingwei(d[0], d[1])
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_TouchAction_dingwei(800, 1300)
        time.sleep(1)
        # 输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea').send_keys('请假的原因')
        time.sleep(2)
        # 浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        # 点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_TouchAction_dingwei(500, 1750)
        #请您确认请假时间确认弹框提示
        # 确认 = [540,1245][1017,1365]
        self.base_page.by_TouchAction_dingwei(800,1300)
        time.sleep(3)
        #获取点击提交按钮后的提示
        text = self.base_page.find_byxpath('/html/body/div[2]/div/div[2]/div[1]').text
        print('texttexttexttexttexttexttexttext')
        print(text)
        print('texttexttexttexttexttexttexttext')
        time.sleep(2)
        return text
Пример #32
0
class shangjishenpi_shenqing_peixunjia_page(BasePage):
    def __init__(self, appium_driver):
        self.base_page = BasePage(appium_driver)

    def shenqing_peixunjia_bohui(self):
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        # 点击请假
        qingjia_button = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/_leave')
        qingjia_button.click()
        time.sleep(1)
        # 切换到webview下
        view_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(view_now)
        cot = self.base_page.get_context()
        time.sleep(3)
        print(cot)
        print('点击请假类型前:')
        # 点击请假类型
        try:
            elem = self.base_page.find_byxpath(
                '//*[@id="app"]/div/div[1]/div[1]/div/input')
        except:
            for i in range(3):
                elem.click()
                time.sleep(1)
        else:
            elem.click()

        cots = self.base_page.get_context()
        print(cots)
        print('点击请假类型后:')
        time.sleep(1)
        # 点击公司培训假(带薪)按钮,修改请假类型,只需要更改后边的li的下标
        self.base_page.find_byClassAndTag('date-list', 'li', 0, 11).click()
        time.sleep(3)
        self.base_page.to_now_context(view_now)
        time.sleep(3)
        # 点击开始时间按钮
        # self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[2]/div/input').click()
        # self.base_page.find_byClassAndTag('mt-item-field-inner', 'input', 1, 0).click()
        # self.base_page.css_select("document.querySelector('.mt-item-input')").click()
        self.base_page.css_select('.mt-item-input')[1].click()
        time.sleep(1)
        self.base_page.to_now_context(view_now)
        time.sleep(3)
        print(self.base_page.get_context())
        print('还没有点击时间25')
        # 点击24号,如果后续日期更换,只更换对于的坐标就可以了
        ''' 位置信息  [318,1473][465,1608]'''
        a = read_yaml_file('shenqing_peixunjia_bohui', 'startTime')
        self.base_page.by_touchAction_uiautomator2(a[0], a[1])
        time.sleep(1)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_touchAction_uiautomator2(800, 1300)
        print('点击了确定按钮')
        time.sleep(3)
        # 点击结束时间按钮
        self.base_page.css_select('.mt-item-input')[2].click()
        time.sleep(2)
        # 点击25号,如果后续日期更换,只更换对于的坐标就可以了
        # 坐标位置 =
        ''' 位置信息  [468,1473][615,1608]'''
        b = read_yaml_file('shenqing_peixunjia_bohui', 'endTime')
        self.base_page.by_touchAction_uiautomator2(b[0], b[1])
        # self.base_page.css_select('document.querySelectorAll(".box-message")[21]').click()
        time.sleep(3)
        # 点击确按钮
        # 确定按钮位置 = [540,1260][1080,1380]
        self.base_page.by_touchAction_uiautomator2(800, 1300)
        # self.base_page.css_select("document.querySelector('.picker-toolbar span.mint-datetime-action.mint-datetime-confirm')").click()
        time.sleep(2)
        # 输入请假原因
        self.base_page.find_byxpath('//*[@id="app"]/div/div[1]/div[6]/textarea'
                                    ).send_keys('年假两天-请假的原因')
        time.sleep(2)
        # 浏览器页面需要向上滑动一下
        self.base_page.swipeUp()
        time.sleep(2)
        # 点击提交按钮
        # 提交按钮 = [90, 1695][990, 1830]
        self.base_page.by_touchAction_uiautomator2(500, 1750)
        # self.base_page.css_select('document.querySelector(".mint-button-text")').click()
        time.sleep(2)
        # 提交的确认弹框
        # 确定按钮 = [540,1245][1017,1365]
        self.base_page.by_touchAction_uiautomator2(800, 1300)
        time.sleep(3)
        #请假成功后,退出账号22399,登入账号 22395
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        self.base_page.find_byandroid_text('我的').click()
        time.sleep(1)
        self.base_page.find_byandroid_text('退出').click()
        time.sleep(1)
        self.base_page.find_byandroid_text('确定').click()
        # 登入账号  22395
        usename = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userName')
        usename.send_keys(22395)
        time.sleep(1)
        pwd = self.base_page.find_byID_(
            'com.flashexpress.backyard:id/userPass')
        pwd.send_keys(123456)
        time.sleep(1)
        #点击确定按钮
        time.sleep(1)
        self.base_page.find_byID_('com.flashexpress.backyard:id/login').click()
        #点击审批按钮
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        '''
        底部导航栏是原生按钮
        如果当前页面在可见审批导航栏页面,需要点击审批按钮,进入审批页面
        点击我的申请按钮
        点击待审批按钮,进入请假申请页面
        页面向上滑动一次
        点击撤销按钮
        点击确认撤销提示的 确定按钮
        点击页面的返回按钮,页面返回至审批页面
        '''

        # 点击审批按钮
        try:
            ele = self.base_page.find_bytext('审批')
        except NoSuchElementException:
            for i in range(3):
                ele.click()
                time.sleep(1)
        else:
            ele.click()

        time.sleep(2)
        context_now = 'WEBVIEW_com.flashexpress.backyard'
        self.base_page.to_now_context(context_now)
        time.sleep(3)
        #点击我的审批按钮
        wodeshenpi = self.base_page.find_byxpath('//*[@id="app"]/div/a[1]')
        print(wodeshenpi)
        wodeshenpi.click()
        #点击待审批按钮
        '''[0,348][1080,822]'''
        self.base_page.to_now_context(context_now)
        time.sleep(5)
        self.base_page.by_touchAction_uiautomator2(500, 500)
        # self.base_page.css_ele_select("div.mint-cell-value.is-link").click()
        time.sleep(1)
        self.base_page.to_now_context(context_now)
        time.sleep(5)
        #页面滑动一次
        self.base_page.swipeUp()
        #点击驳回按钮  //*[@id="pageTwo"]/div/div[1]/div[6]/span[1]   [60,1602][510,1740]
        # self.base_page.find_byClassAndTag('mt-page-footer', 'span', 0, 0).click()
        self.base_page.by_touchAction_uiautomator2(400, 1700)
        time.sleep(3)
        self.base_page.to_now_context('WEBVIEW_com.flashexpress.backyard')
        time.sleep(5)
        #定位驳回原因输入框 //*[@id="pageTwo"]/div/div[1]/div[8]/div/div[2]/textarea [144,945][936,1248]
        self.base_page.to_now_context('NATIVE_APP')
        time.sleep(3)
        eles = self.base_page.find_byH5class("android.widget.EditText")
        eles.send_keys("培训假申请驳回的原因")
        time.sleep(1)
        #点击确定按钮
        self.base_page.by_touchAction_uiautomator2(700, 1380)
        time.sleep(2)
Пример #33
0
 def _logout():
     logout_page = BasePage(driver)
     with allure.step('Logout step'):
         LOGGER.info('Logout')
     logout_page.wait_for_element_and_click(*LoginPageLocators.LOGOUT_BTN)
Пример #34
0
 def __init__(self, driver):
     BasePage.__init__(self, driver)
     MixinFullSearchProduct.__init__(self)
 def __init__(self, driver):
     BasePage.__init__(self, driver, "http://automationpractice.com/index.php?controller=order&step=2&multi-shipping=")