Exemplo n.º 1
0
    def test_substitute(self):  # pragma: no cover
        selenium = self.selenium
        product = Product.objects.get(name="My product 1")
        selenium.get(f"{self.live_server_url}")
        selenium.maximize_window()
        selenium.implicitly_wait(5)

        text = selenium.find_element_by_class_name("main-search")
        submit = selenium.find_element_by_id("search-button")
        text.send_keys("product")
        submit.click()
        wait = WebDriverWait(selenium, 20)
        wait.until(EC.url_to_be(f"{self.live_server_url}/product/"))

        product_1 = selenium.find_element_by_xpath(
            f"//a[@href='/substitute/{product.id}']")
        while selenium.current_url == f"{self.live_server_url}/product/":
            product_1.click()

        wait = WebDriverWait(selenium, 20)
        wait.until(
            EC.url_to_be(f"{self.live_server_url}/substitute/{product.id}"))

        current_url = selenium.current_url
        if (selenium.current_url[len(selenium.current_url) - 1]) == "/":
            current_url = selenium.current_url[:-1]

        assert current_url == f"{self.live_server_url}/substitute/{str(product.id)}"
        assert selenium.find_element_by_xpath(
            "//a[@href='?page=2']") is not None
        assert "Vous pouvez remplacez cet aliment par :" in selenium.page_source
Exemplo n.º 2
0
def buy_ticket(one_train, is_stu, seat_name):
    action = ActionChains(driver)
    reserve_button = one_train.find_element_by_xpath("./td[last()]/a")  # 预订按钮
    action.double_click(reserve_button)  # 双击预订按钮
    action.perform()
    login_box_visible = driver.find_element_by_class_name('modal-login').get_attribute('style')
    if login_box_visible != 'display: none;':  # 判断登陆信息是否过期,是否会弹出登陆框
        print('登陆信息失效,请重新登陆!')
        login()
        WebDriverWait(driver, 10).until(
            EC.url_to_be('https://kyfw.12306.cn/otn/confirmPassenger/initDc')
        )  # 是否来到确认订单页面
        print("登陆成功!")
    WebDriverWait(driver, 10).until(
        EC.url_to_be('https://kyfw.12306.cn/otn/confirmPassenger/initDc')
    )  # 是否来到确认订单页面
    choose_passenger()  # 选择乘客
    if is_stu == 'T':  # 处理是否购买学生票的弹出框
        WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.ID, 'dialog_xsertcj_ok'))
        )
        driver.find_element_by_id('dialog_xsertcj_ok').click()
    else:
        WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.ID, 'dialog_xsertcj_cancel'))
        )
        driver.find_element_by_id('dialog_xsertcj_cancel').click()
    choose_seat(seat_name)  # 在确认订单处选择座位类型
    WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, 'submitOrder_id'))
    )
    driver.find_element_by_id('submitOrder_id').click()  # 提交订单
    confirm_to_buy()
Exemplo n.º 3
0
def fnt_login(iteration=1):
    for driver in drivers.remoteList:
        driver.implicitly_wait(20)
        wait = WebDriverWait(driver, 20)
        try:
            for i in range(0, iteration):
                driver.get(d.url_fntmain)
                wait.until(EC.url_to_be(d.url_base + d.url_login))
                driver.find_element_by_id("username").send_keys(d.username)
                driver.find_element_by_id("password").send_keys(d.password)
                driver.find_element_by_id("ok").send_keys(Keys.ENTER)
                wait.until(EC.url_to_be(d.url_base + d.url_mandant))
                driver.find_element_by_id("ok").click()
                wait.until(EC.url_to_be(d.url_base + d.url_command))
                driver.set_page_load_timeout(10)
                time.sleep(2)
                driver.find_element_by_xpath("//*[@id='logout']/span").click()
        except WebDriverException as e:
            print("Execution error {}".format(e))
            return False
        finally:
            #for loginHARD
            #driver.quit()
            #driver.close()
            pass
    return True
Exemplo n.º 4
0
    def test_valid(self):
        get_user_model().objects.create_superuser('tester', '', 'test')
        self.do_login(username='******', password='******')

        WebDriverWait(self.browser, 30).until(
            url_to_be("%s/accounts/profile/" % self.live_server_url),
            'Should redirect to profile page')

        edid_detail_url = \
            "%s/edid/%i/" % (self.live_server_url, self.edid.id)
        edid_update_url = \
            "%s/edid/%i/update/" % (self.live_server_url, self.edid.id)
        edid_revision_url = \
            "%s/edid/%i/revision/" % (self.live_server_url, self.edid.id)
        timing_1_update_url = "%s/edid/%i/standard_timing/%i/update/" % (
            self.live_server_url, self.edid.id,
            self.edid.standardtiming_set.all()[0].id)

        # Go to timing update page
        self.browser.get(timing_1_update_url)

        # Update timing and submit form
        self.browser.find_element_by_id('id_refresh_rate').clear()
        self.browser.find_element_by_id('id_refresh_rate').send_keys('120')
        self.browser.find_element_by_id('submit-id-submit').click()

        WebDriverWait(self.browser,
                      30).until(url_to_be(edid_update_url),
                                'Should redirect to EDID update page')

        # Update EDID and submit form
        self.browser.find_element_by_link_text('Monitor Range Limits').click()
        self.browser.find_element_by_id('id_monitor_range_limits').click()
        self.browser.find_element_by_id('submit-id-submit').click()

        WebDriverWait(self.browser,
                      30).until(url_contains(edid_detail_url),
                                'Should redirect to EDID detail page')

        # Check 'Monitor Range Limits' is disabled
        self.assertRaises(NoSuchElementException,
                          self.browser.find_element_by_id,
                          'monitor_range_limits')

        # Go to EDID revisions page
        self.browser.get(edid_revision_url)

        # Revert revision 1
        self.browser.find_element_by_id('revision-1-revert-link').click()

        # Confirm revert action
        self.browser.find_element_by_id('revert-id-revert').submit()

        WebDriverWait(self.browser,
                      30).until(url_contains(edid_detail_url),
                                'Should redirect to EDID detail page')

        # Check 'Monitor Range Limits' is enabled
        self.browser.find_element_by_id('monitor_range_limits')
Exemplo n.º 5
0
 def __call__(self, driver: WebDriver):
     try:
         res = EC.url_to_be(self.url)(driver)
         if res:
             return res
     except Exception as e:
         print(e)
         pass
     return EC.url_to_be(f'{self.url}/')(driver)
Exemplo n.º 6
0
 def click_login(self):
     self.driver.find_element_by_xpath(self.login_button_xpath).click()
     commonobj = CommonFunctions()
     url = commonobj.get_value_from_conf_file('configuration.properties',
                                              'URL')
     try:
         EC.url_to_be('url')
     except TimeoutException:
         print("Home page is taking tool long to load completely")
Exemplo n.º 7
0
 def test_login_with_correct(self):
     # create a user in order to be able to login
     self.signup()
     self.wait.until(ec.url_to_be(DOMAIN + "/me"))
     # login with correct credentials
     self.go_to_page()
     self.login.login()
     self.wait.until(ec.url_to_be(DOMAIN + "/me"))
     # clean up after successfully login
     self.delete_account()
Exemplo n.º 8
0
 def test_add_then_delete_a_product_from_shopping_cart(self):
     """US008-AT01: add then drop a product from shopping cart."""
     # request the catalog page
     start_url = self.home_url + "catalog/"
     self.driver.get(start_url)
     # click on the first button "Ajouter au panier"
     add_to_cart_button = self.driver.find_elements_by_link_text(
         "Ajouter au panier")[0]
     add_to_cart_button.click()
     # wait for page loading
     WebDriverWait(self.driver, timeout=10).until(EC.url_changes(start_url))
     # check wether the page is reachable
     expected_url_start = self.home_url + "shopping_cart/add_product/"
     self.assertTrue(self.driver.current_url.startswith(expected_url_start))
     # update data
     last_name_field = self.driver.find_element_by_id("id_size")
     last_name_field.send_keys("M")
     # click on the button "Ajouter au panier"
     submit_button = self.driver.find_element_by_id("submit-id-submit")
     submit_button.click()
     # wait for page loading
     WebDriverWait(self.driver, timeout=10).until(EC.url_to_be(start_url))
     # click on the link "Voir mon panier"
     cart_link = self.driver.find_element_by_link_text("Voir mon panier")
     cart_link.click()
     # wait for page loading
     WebDriverWait(self.driver, timeout=10).until(EC.url_changes(start_url))
     # check wether the page is reachable
     expected_url = self.home_url + "shopping_cart/"
     self.assertEqual(self.driver.current_url, expected_url)
     # click on the button "Supprimer"
     delete_button = self.driver.find_element_by_link_text("Supprimer")
     delete_button.click()
     # wait for page loading
     WebDriverWait(self.driver,
                   timeout=10).until(EC.url_changes(expected_url))
     # check wether the page is reachable
     new_url_start = self.home_url + "shopping_cart/drop_product/"
     self.assertTrue(self.driver.current_url.startswith(new_url_start))
     # click on the button "Confirmer"
     submit_button = self.driver.find_element_by_id("submit-id-submit")
     submit_button.click()
     # wait for page loading
     expected_url = self.home_url + "shopping_cart/"
     WebDriverWait(self.driver,
                   timeout=10).until(EC.url_to_be(expected_url))
     # check wether the cart is empty
     p_list = self.driver.find_elements_by_tag_name('p')
     self.assertEqual(p_list[0].text, "Montant total du panier : 0 €")
     self.assertEqual(p_list[1].text,
                      "Votre panier de pré-commande est vide !")
Exemplo n.º 9
0
 def test_login_password_auth(self):
     self.driver.get("https://passport.yandex.ru/auth")
     self.assertIn("Авторизация", self.driver.title)
     elem = self.driver.find_element_by_css_selector(
         "input#passp-field-login")
     elem.send_keys(_AUTH_LOGIN)
     elem.send_keys(Keys.RETURN)
     WebDriverWait(self.driver, 10).until(
         EC.url_to_be("https://passport.yandex.ru/auth/welcome"))
     elem = self.driver.find_element_by_css_selector(
         "input#passp-field-passwd")
     elem.send_keys(_AUTH_PASSWORD)
     elem.send_keys(Keys.RETURN)
     WebDriverWait(self.driver, 10).until(
         EC.url_to_be("https://passport.yandex.ru/profile"))
Exemplo n.º 10
0
    def test_one_click_buy_order_email(self):
        product_vendor_code = self.product.vendor_code

        increase_quantity = self.browser.find_element_by_xpath(
            '//*[@class="product-price-wrapper"]/div[1]/div[1]/span[3]/button[1]'
        )
        increase_quantity.click()
        increase_quantity.click()
        result_quantity = int(
            self.browser.find_element_by_class_name(
                'js-touchspin').get_attribute('value'))
        self.browser.execute_script('$("#input-one-click-phone").val("");')
        phone_field = self.browser.find_element_by_id('input-one-click-phone')
        phone_field.send_keys('2222222222')
        self.one_click.click()
        self.wait.until(EC.url_to_be(self.success_order))

        sent_mail_body = mail.outbox[0].body
        self.assertIn('+7 (222) 222 22 22', sent_mail_body)
        self.assertInHTML(
            '<td align="left"'
            'style="border-bottom:1px solid #E4E4E4;padding:10px">{0}</td>'.
            format(product_vendor_code), sent_mail_body)
        self.assertIn(self.product.url, sent_mail_body)
        self.assertIn('{0} шт.'.format(result_quantity), sent_mail_body)
        self.assertInHTML(
            '<td align="right" style="padding:5px 10px">{0} руб.</td>'.format(
                int(self.product.price * result_quantity)), sent_mail_body)
Exemplo n.º 11
0
 def _login(self):
     self.driver.get(self.login_url)
     self.driver.find_element_by_link_text(r'账号登录').click()
     #显式等待,判断是否登录成功(EC.url_to_be(目标url):判断当前url是否等于目标url,是就不继续等待下去了,退出)
     WebDriverWait(self.driver,
                   1000).until(EC.url_to_be(self.personal_centre_url))
     print('登录成功')
Exemplo n.º 12
0
def test(browser, request, task_url):
    page = Task302Page(browser, task_url)

    assert page.heading.tag_name == "h1"
    assert page.heading.text == "Задание 3.02"

    assert page.a.tag_name == "input"
    assert page.b.tag_name == "input"
    assert page.submit.tag_name == "button"

    with pytest.raises(NoSuchElementException):
        assert page.result

    a = randint(10, 99)
    b = randint(10, 99)

    page.a.clear()
    page.a.send_keys(str(a))

    page.b.clear()
    page.b.send_keys(str(b))

    page.submit.click()

    WebDriverWait(page.browser, timeout=4).until(
        EC.url_to_be(task_url),
        f"no page reload",
    )

    assert page.result.tag_name == "span"
    assert page.result.text == f"{a} плюс {b} равно {a + b}"
Exemplo n.º 13
0
    def test_delete_user(self):
        self.selenium.get(f"{self.live_server_url}/mijn/privacy")
        WebDriverWait(self.selenium, self.explicit_wait).until(
            EC.text_to_be_present_in_element(
                (By.CSS_SELECTOR, ".header-title"), "Mijn privacy"),
            EC.text_to_be_present_in_element(
                (By.CSS_SELECTOR, ".privacy__form__label"), "Communities"),
        )
        self.selenium.find_element_by_css_selector(
            ".privacy input").is_selected()
        self.selenium.find_element_by_css_selector(
            ".permission-container .switch-input").click()

        WebDriverWait(self.selenium, self.explicit_wait).until(
            EC.text_to_be_present_in_element(
                (By.CSS_SELECTOR, ".privacy__form__button"),
                "Verwijder account en log uit"))

        self.selenium.find_element_by_css_selector(
            ".privacy__form__button").click()

        WebDriverWait(self.selenium, self.explicit_wait).until(
            EC.text_to_be_present_in_element(
                (By.CSS_SELECTOR, ".popup__title"), "Account verwijderen"))
        self.selenium.find_element_by_css_selector(
            ".popup-content__actions button").click()

        WebDriverWait(self.selenium, self.explicit_wait).until(
            EC.url_to_be("https://engine.surfconext.nl/logout"))
Exemplo n.º 14
0
def scratch(save_dir: str, driver: WebDriver, wait: WebDriverWait):
    """ スクラッチ """
    url = 'https://aw.mobadme.jp/scratch/play?m_id=5701'
    success = True

    driver.get(url)

    try:
        wait.until(ec.url_to_be(url))

        # img.item-image を3つ選択して待機
        seals = driver.find_elements_by_css_selector('img.item-image')[0:3]
        for s in seals:
            s.click()

        # .resultBoard が出たらキャプチャ
        wait.until(ec.visibility_of_element_located(
            (By.CSS_SELECTOR, '.resultBoard')))

        driver.save_screenshot(
            '%s/scratch_%s.png' % (save_dir, datetime.datetime.now().strftime('%Y%m%d%H%M%S')))
    except:
        utils.LOGGER.exception('スクラッチプレイエラー')
        success = False

    # ステータス更新
    RESULTS.scratch = {
        'success': success,
    }
 def test_guetstboard_submit_04(self):
     """Posting submit success and view registerd message"""
     self.selenium.get('%s%s' % (self.live_server_url, '/guestboard/'))
     # input name
     name = self.selenium.find_element_by_css_selector('input[name="name"]')
     name.send_keys("Arty")
     # input message
     message = self.selenium.find_element_by_css_selector(
         'textarea[name="message"]')
     message.send_keys("Test Message 100")
     # click submit button
     submit = self.selenium.find_element_by_css_selector(
         'input[type="submit"]')
     submit.click()
     # time.sleep(self.SERVER_RESPONSE_WAIT_SEC)
     # リダイレクトチェック
     wait = WebDriverWait(self.selenium, self.SERVER_RESPONSE_WAIT_SEC)
     wait.until(
         EC.url_to_be('%s%s' % (self.live_server_url, '/guestboard/')))
     # 投稿成功メッセージチェック
     messages = self.selenium.find_elements_by_css_selector(
         'ul.messages > li.success')
     self.assertEqual(1, len(messages))
     self.assertEqual('投稿を受け付けました。', messages[0].text.strip())
     # 投稿パネルの表示内容チェック
     postings = self.selenium.find_elements_by_css_selector('div.panel')
     self.assertEqual(5, len(postings))
     posting_data = {
         "name": "Arty",
         "message": "Test Message 100",
     }
     self.__assert_posting_panel(postings[0], posting_data)
def test_login_with_correct_login_password(driver):
    driver.get("http://localhost/litecart/admin/login.php")
    driver.find_element_by_name("username").send_keys("admin")
    driver.find_element_by_name("password").send_keys("admin")
    driver.find_element_by_name("login").click()
    WebDriverWait(driver,
                  10).until(EC.url_to_be("http://localhost/litecart/admin/"))
Exemplo n.º 17
0
def verify_result(
    page: Task310Page,
    task_url: str,
    money: str,
    result1: str = "",
    result2: str = "",
) -> None:
    page.money.clear()
    if money:
        page.money.send_keys(money)
    page.submit.click()
    WebDriverWait(page.browser, timeout=4).until(
        EC.url_to_be(task_url),
        f"no page reload",
    )

    if not money:
        with pytest.raises(NoSuchElementException):
            assert page.result1.tag_name
        with pytest.raises(NoSuchElementException):
            assert page.result2.tag_name
        return

    assert page.result1.tag_name == "span"
    assert page.result1.text == result1, f"result1 mismatch for: {money!r}"

    assert page.result2.tag_name == "pre"
    assert page.result2.text == result2, f"result2 mismatch for: {money!r}"
Exemplo n.º 18
0
 def wait_until_url(self, url, time_to_wait=10, frequency=0.5):
     """
     Method to wait until the url is loaded and by default it waits for 10 seconds and polls for 0.5 milli seconds
     Usage :
         obj = Base()
         obj.wait_until_url(url = "https://www.google.com")
     :param url: url to be loaded
     :param time_to_wait :
     :param frequency :
     :return: (True, loaded url)/False (if url failed to load)
     """
     start_time = int(round(time.time()) / 1000)
     try:
         wait = WebDriverWait(self.browser,
                              time_to_wait,
                              poll_frequency=frequency)
         url_to_load = wait.until(EC.url_to_be(url))
         end_time = int(round(time.time()) / 1000)
         load_time = (end_time - start_time) / 1000
         log.info("url loaded in {} seconds".format(load_time))
     except Exception as e:
         end_time = int(round(time.time()) / 1000)
         load_time = (end_time - start_time) / 1000
         self.get_screenshot(info="Error")
         log.error(
             "url loading failed with exception {}  and the url load time is  {} seconds"
             .format(e, load_time))
         traceback.print_exc()
         return False
     return True, url_to_load
Exemplo n.º 19
0
    def _login(self):
        self.driver.get(self.login_url)
        
        WebDriverWait(self.driver, 1000).until(EC.url_to_be(self.init_url))
        print("登录成功...")

        self._order_ticket()
Exemplo n.º 20
0
    def Login(self, username, password, driver):
        try:
            logged_in = False

            driver.get('https://accounts.spotify.com/en/login/')
            element_present = EC.presence_of_element_located(
                (By.ID, 'login-username'))
            WebDriverWait(driver,
                          self.website_load_max_wait).until(element_present)
            username_elem = driver.find_element_by_id('login-username')
            username_elem.send_keys(username)
            password_elem = driver.find_element_by_id('login-password')
            password_elem.send_keys(password)
            login_button_elem = driver.find_element_by_id('login-button')
            login_button_elem.click()

            try:
                element_present = EC.url_to_be(
                    'https://accounts.spotify.com/en/status')
                WebDriverWait(driver,
                              self.login_check_max_wait).until(element_present)
                self.PrintText(Fore.CYAN, Fore.RED, 'LOGIN',
                               f'LOGGED IN WITH | {username}:{password}')
                logged_in = True
            except TimeoutException:
                self.PrintText(
                    Fore.RED, Fore.CYAN, 'LOGIN',
                    f'FAILED TO LOGIN WITH | {username}:{password}')
                logged_in = False

            return logged_in
        except:
            driver.quit()
            self.Login(username, password, driver)
Exemplo n.º 21
0
def repeat_click_if_timeout(driver, webel, ec_url_type, exact_url=None, current_url=None, repeat_click = 1, two_second_wait = False):
    attempt = 0
    url_diff = False

    while not url_diff:
        if attempt == repeat_click:
            raise TimeoutException('{} attempts reached'.format(repeat_click))

        print('web element clicked (repeat).')
        webel.click()

        if two_second_wait: #for too many APM
            time.sleep(2)

        try:
            if ec_url_type == 'exact':
                WebDriverWait(driver, 10).until(EC.url_to_be(exact_url))
            elif ec_url_type == 'changed':
                WebDriverWait(driver, 10).until(EC.url_changes(current_url))

            url_diff = True

        except TimeoutException:
            attempt += 1
            print("Navigation failed. Try again. Attempt: {}".format(attempt))
            print(current_url)
Exemplo n.º 22
0
def go_to_datesearch(driver, mouse, cfg, logger=None):
    """
    メニュー画面から「随時予約・抽選申込」を選択し、「空き状況を検索」画面移動する
    """
    global http_req_num
    # 待機時間を設定する
    wait = WebDriverWait(driver, 10)
    # mypageのURLにリダイレクトされるまで待機する
    wait.until(EC.url_to_be(cfg['mypage_url']))
    # 検索ページがすべて表示されるまで待機する
    wait.until(EC.presence_of_all_elements_located)
    # デバック用
    # _html = driver.page_source
    # with open('mypage.html', mode='w', encoding='utf-8', errors='ignore') as f:
    #     f.write(_html)
    # メニューバーの「随時予約・抽選申込」をクリックする
    driver.find_element(
        By.XPATH,
        '/html/body/div[1]/article/section[2]/ul/li[1]/form/a').click()
    http_req_num += 1
    # 検索ページがDOM上にすべて表示されるまで待機する
    #wait.until(EC.presence_of_all_elements_located)
    wait.until(EC.title_contains("空き状況を検索|八王子市施設予約システム"))
    # 画面のtitleを確認する
    assert '空き状況を検索|八王子市施設予約システム' in driver.title
    return driver, mouse
Exemplo n.º 23
0
 def assert_login_finished_fn():
     logger.info(
         f"{self.name} 请等待网页切换为目标网页,则说明已经登录完成了,最大等待时长为{self.cfg.login.login_finished_timeout}"
     )
     WebDriverWait(self.driver,
                   self.cfg.login.login_finished_timeout).until(
                       expected_conditions.url_to_be(s_url))
Exemplo n.º 24
0
 def setUp(self):
     # create an account in order to be able to login
     self.signup()
     self.wait.until(ec.url_to_be(DOMAIN + "/me"))
     self.page_url = DOMAIN + "/reviews"
     # create a review
     self.create_review()
Exemplo n.º 25
0
def schoolsByAuthorize(browser):
    
    browser.get(<CONFIDENTIAL INFO>)

    while True:
        try:
            WebDriverWait(browser, 30).until(EC.presence_of_element_located((
                By.XPATH, '//a[@href="<CONFIDENTIAL INFO>"]'
            )))
            break
        except TimeoutException:
            browser.refresh()
            pass

    logged = False

    try:
        logInButton = browser.find_element_by_id('sch_login_lnk')
    except NoSuchElementException:
        logged = True

    if not logged:
        logInButton.click()
        username = browser.find_element_by_xpath("//input[@name='username']")
        password = browser.find_element_by_xpath("//input[@name='password']")

        username.send_keys(<CONFIDENTIAL INFO>)
        password.send_keys(<CONFIDENTIAL INFO>)

        username.submit()

        WebDriverWait(browser, 30).until(EC.url_to_be(
            '<CONFIDENTIAL INFO>/journals'
        ))
Exemplo n.º 26
0
 def _login(self):
     self.driver.get(self.login_url)
     #显示等待
     WebDriverWait(self.driver,1000).until(
         EC.url_to_be(self.initmy_url) #这个方法表示 url是否是等于指定的url
     )
     print("登陆成功")
Exemplo n.º 27
0
 def _login(self):
     self.driver.get(self.login_url)
     # 检测是否登录
     WebDriverWait(self.driver, 1000).until(
         # 是否等于我的登录地址
         EC.url_to_be(self.initmy_url))
     print("登录成功!")
Exemplo n.º 28
0
    def _login(self):
        self.driver.get(self.login_url)
        #显示等待

        #隐式等待
        WebDriverWait(self.driver, 1000).until(EC.url_to_be(self.initmy_url))
        print("登陆成功")
Exemplo n.º 29
0
    def try_to_login(self,
                     username: str,
                     password: str,
                     location_index: int = 1):
        """
            Login to the repairQ page

            Args:
                user: RepairQ user's login
                password: RepairQ user's password
                group_index: Index of the group to login
                
            Returns:
                True if login is successfull and False otherwise
        """
        LoginPage.set_username(self, username)
        LoginPage.set_password(self, password)
        LoginPage.select_location_by_index(self, location_index)
        btn = self.driver.find_element(*LoginPage.LOGIN_BTN)
        btn.click()

        try:
            self.wait.until(EC.url_to_be('https://cinq.repairq.io/'))
        except TimeoutException:
            error = self.driver.find_element_by_class_name('help-inline')
            # print('RepairQ Login Error:', error.get_attribute("innerHTML") )
            return False
        else:
            # print('RepairQ Login Success')
            return True
    def testSignup(self):
        urls = self.urls
        user = self.newUser
        
        self.browser.get(urls['base'] + urls['signup'])
        
        #create user
        email = self.browser.find_element_by_name('email')
        email.send_keys(user['email'])

        name = self.browser.find_element_by_name('name')        
        name.send_keys(user['name'])

        password = self.browser.find_element_by_name('pass')
        password.send_keys(user['password'])
        
        confPass = self.browser.find_element_by_name('confPass')
        confPass.send_keys(user['password'])
        
        confPass.submit()
    
        WebDriverWait(self.browser, 10).until(
            EC.url_to_be(urls['base'] + urls['home'])
        )
        
        # delete user
        access_token = self.getTokenFromCookie()
        user_id = self.browser.get_cookie('user_id')['value']

        headers = { 'Authorization': 'Bearer ' + str(access_token) }
        response = requests.delete(urls['server'] + 'users/' + user_id, headers=headers)
        
        self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT)
Exemplo n.º 31
0
    def test_admin_login(self):
        """Test client-side actions on login/logout."""

        get_user_model().objects.create_superuser('tester', '', 'test')
        self.do_login(username='******', password='******')

        WebDriverWait(self.browser, 30).until(
            url_to_be("%s/accounts/profile/" % self.live_server_url),
            'Should redirect to profile page'
        )
Exemplo n.º 32
0
    def test_logout(self):
        # Non-admin user login
        get_user_model().objects.create_user('tester', '', 'test')
        self.do_login(username='******', password='******')

        WebDriverWait(self.browser, 30).until(
            url_to_be("%s/accounts/profile/" % self.live_server_url),
            'Should redirect to profile page'
        )

        # Logout
        self.do_logout()

        WebDriverWait(self.browser, 30).until(
            url_to_be("%s/" % self.live_server_url),
            'Should redirect to main page'
        )

        # Check user is really logged out by looking for login link
        self.browser.find_element_by_id('account_menu').click()
        self.browser.find_element_by_id('login_link')
Exemplo n.º 33
0
    def test_valid(self):
        get_user_model().objects.create_superuser('tester', '', 'test')
        self.do_login(username='******', password='******')

        WebDriverWait(self.browser, 30).until(
            url_to_be("%s/accounts/profile/" % self.live_server_url),
            'Should redirect to profile page'
        )

        edid_detail_url = \
            "%s/edid/%i/" % (self.live_server_url, self.edid.id)
        edid_update_url = \
            "%s/edid/%i/update/" % (self.live_server_url, self.edid.id)
        edid_revision_url = \
            "%s/edid/%i/revision/" % (self.live_server_url, self.edid.id)
        timing_1_update_url = "%s/edid/%i/standard_timing/%i/update/" % (
            self.live_server_url,
            self.edid.id,
            self.edid.standardtiming_set.all()[0].id
        )

        # Go to timing update page
        self.browser.get(timing_1_update_url)

        # Update timing and submit form
        self.browser.find_element_by_id('id_refresh_rate').clear()
        self.browser.find_element_by_id('id_refresh_rate').send_keys('120')
        self.browser.find_element_by_id('submit-id-submit').click()

        WebDriverWait(self.browser, 30).until(
            url_to_be(edid_update_url),
            'Should redirect to EDID update page'
        )

        # Update EDID and submit form
        self.browser.find_element_by_link_text('Monitor Range Limits').click()
        self.browser.find_element_by_id('id_monitor_range_limits').click()
        self.browser.find_element_by_id('submit-id-submit').click()

        WebDriverWait(self.browser, 30).until(
            url_contains(edid_detail_url),
            'Should redirect to EDID detail page'
        )

        # Check 'Monitor Range Limits' is disabled
        self.assertRaises(
            NoSuchElementException,
            self.browser.find_element_by_id,
            'monitor_range_limits'
        )

        # Go to EDID revisions page
        self.browser.get(edid_revision_url)

        # Revert revision 1
        self.browser.find_element_by_id('revision-1-revert-link').click()

        # Confirm revert action
        self.browser.find_element_by_id('revert-id-revert').submit()

        WebDriverWait(self.browser, 30).until(
            url_contains(edid_detail_url),
            'Should redirect to EDID detail page'
        )

        # Check 'Monitor Range Limits' is enabled
        self.browser.find_element_by_id('monitor_range_limits')