示例#1
0
def login(browser: webdriver.WebDriver):
    browser.set_page_load_timeout(5)
    try:
        browser.get(wbm_cfg.homepage_url)
    except WebDriverException:
        browser.refresh()
    finally:
        pyautogui.typewrite(wbm_cfg.login_user_value)
        pyautogui.typewrite("\t")
        pyautogui.typewrite(wbm_cfg.login_pw_value)
        pyautogui.typewrite("\n")
        logging.info("Login executed")
        wait_for_page(browser, wbm_cfg.homepage_url,
                      wbm_cfg.main_page_attr_xpath)
    def test_Selenium_Unit_Test(self):
        #         chrome_driver_path = "/var/lib/jenkins/workspace/rasa pipeline/Selenium_Webdriver/chromedriver"
        # create a new Chrome session
        # from pyvirtualdisplay import Display
        # display = Display(visible=0, size=(800, 600))
        # display.start()
        #         options = webdriver.FirefoxOptions()
        #         options.add_argument('-headless')
        # Last I checked this was necessary.

        #         driver = webdriver.Chrome(chrome_driver_path, options=options1)
        from selenium.webdriver.firefox.options import Options as FirefoxOptions
        from selenium.webdriver.firefox.webdriver import WebDriver

        options1 = FirefoxOptions()
        options1.add_argument("-headless")
        driver = WebDriver(options=options1)
        driver.implicitly_wait(30)
        time.sleep(12)
        driver.get(
            'http://sidwebpage.s3.us-east-2.amazonaws.com/website/index.html')
        print(driver.current_url)
        time.sleep(5)
        driver.refresh()
        time.sleep(5)
        # chatbot testing simulation
        driver.find_element_by_xpath('//*[@id="webchat"]/div/button ').click()
        time.sleep(5)
        Mousepointer = driver.find_element_by_xpath(
            '//*[@id="webchat"]/div/div/form/input')
        Mousepointer.send_keys("Hi")
        Mousepointer.send_keys(Keys.ENTER)
        ExpectedReply = "Hey! How are you Muthu?"
        Reply = driver.find_element_by_xpath(
            '//*[@id="messages"]/div/following::span').text
        print(Reply)
        self.assertEqual(Reply, ExpectedReply)
        print("Success")
        driver.quit()
示例#3
0
def cleanup_cart(browser: webdriver.WebDriver, task_data: TaskData):
    open_cart_page(browser)

    product_row_xpath = "//div[contains(@class, 'newcart_box')]" \
                        "//div[contains(@class, 'newcart_main')]" \
                        "//ul[contains(@class, 'newcart_list_items')]"
    product_link_xpath = ".//li[contains(@class, 'newcart_product')]//a[contains(@class, 'title')]"

    products_in_cart = list(
        map(lambda p: p.find_element_by_xpath(product_link_xpath).text,
            browser.find_elements_by_xpath(product_row_xpath)))

    logging.info(
        "Finding products added from the task in the list of products in cart")
    while task_data.products and set(
            task_data.products).intersection(products_in_cart):
        logging.info(
            "List of added products and list of products in cart intersect.")
        for product in task_data.products:
            logging.info(f"Working with product {product}.")

            try:
                _remove_one_product_from_cart(browser, task_data,
                                              product_row_xpath, product)
                logging.info(f"Done with product {product}. Moving on...")
                break
            except NoSuchElementException:
                logging.error(
                    f"Product {product} was not found in cart and was probably already deleted. Moving on..."
                )
                logging.error(traceback.format_exc())
                task_data.products.remove(product)
                break

        browser.refresh()
        products_in_cart = list(
            map(lambda p: p.find_element_by_xpath(product_link_xpath).text,
                browser.find_elements_by_xpath(product_row_xpath)))
示例#4
0
def fetch_dogs_list(driver: WebDriverClass) -> list:
    """Fetch list of available rescue dogs.

    Refreshes the webdriver instance and parses the pages for available rescue
    dogs. For now, it's implemented by first matching a <div> of class
    "dogs col-md-12" (hope it doesn't change) and then matching all the children
    span elements.

    Parameters
    ----------
    driver : WebDriverClass
        selenium webdriver instance (already initialized)

    Returns
    -------
    list
        List of elements matching the spans containing dogs
    """
    driver.refresh()
    time.sleep(2)
    dog_list = driver.find_elements_by_xpath(
        "//div[@class='dogs col-md-12']/span")
    dog_list = [dog.text for dog in dog_list]
    return dog_list
class TransactionTypeAddTest(StaticLiveServerTestCase):
    def setUp(self):
        self.selenium = WebDriver()
        self.user = User.objects.create_superuser(username="******",
                                                  email="*****@*****.**",
                                                  password="******",
                                                  first_name="kossar",
                                                  last_name="najafi",
                                                  phone_number="09147898557",
                                                  account_number="1234567812345678",
                                                  notification_preference="S")
        self.selenium.implicitly_wait(10)
        self.selenium.get('%s%s' % (self.live_server_url, '/admin_panel/transaction_types/add'))

    def tearDown(self):
        self.selenium.quit()

    def __get_page(self):
        class TransactionTypeAddPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.name = self.selenium.find_element_by_id('id_name')
                self.description = self.selenium.find_element_by_id('id_description')
                self.fixed_price = self.selenium.find_element_by_id('id_fixed_price')
                self.currency_select = Select(self.selenium.find_element_by_id('id_currency'))
                self.price = self.selenium.find_element_by_id('id_price')
                self.min_price = self.selenium.find_element_by_id('id_min_amount')
                self.max_price = self.selenium.find_element_by_id('id_max_amount')
                self.wage = self.selenium.find_element_by_id('id_wage_percentage')
                # self.group = self.selenium.find_element_by_id('id_transaction_group')
                self.general_info = self.selenium.find_element_by_id('id_required_fields_0')
                self.personal_info = self.selenium.find_element_by_id('id_required_fields_1')
                self.exam_info = self.selenium.find_element_by_id('id_required_fields_2')
                self.university_info = self.selenium.find_element_by_id('id_required_fields_3')
                self.button = self.selenium.find_element_by_xpath("//button[@type='submit']")

        return TransactionTypeAddPage(self.selenium)

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get('%s%s' % (self.live_server_url, '/admin_panel/transaction_types/add'))

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')

    @staticmethod
    def __get_checked(element):
        return element.get_attribute('checked')

    @staticmethod
    def __send_keys_scrolling(input_element, keys):
        _ = input_element.location_once_scrolled_into_view
        time.sleep(1)
        input_element.send_keys(keys)

    def check_transaction_type_creation(self):
        toefl = PaymentType.objects.get(name="toefl")
        self.assertIn("english", toefl.description)

    def _fill(self, page):
        self.__send_keys_scrolling(page.name, 'toefl')
        self.__send_keys_scrolling(page.description, 'english exam')
        page.fixed_price.click()
        page.currency_select.select_by_visible_text("$")
        page.min_price.clear()
        page.price.clear()
        page.max_price.clear()
        page.wage.clear()
        self.__send_keys_scrolling(page.price, '200')
        self.__send_keys_scrolling(page.min_price, '1')
        self.__send_keys_scrolling(page.max_price, '1000000')
        self.__send_keys_scrolling(page.wage, '7')
        page.personal_info.click()
        page.general_info.click()
        page.exam_info.click()

    def test_successful_ttadd(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        self.check_transaction_type_creation()
        self.assertNotIn("add", self.selenium.current_url)

    def test_empty_parts_add(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.name.clear()
        page.button.click()
        self.assertIn("add", self.selenium.current_url)
示例#6
0
class ExchangeCreditTest(StaticLiveServerTestCase):
    def setUp(self):
        self.selenium = WebDriver()
        self.user = User.objects.create_user(username="******",
                                             email="*****@*****.**",
                                             password="******",
                                             first_name="kossar",
                                             last_name="najafi",
                                             phone_number="09147898557",
                                             account_number="1234432112344321",
                                             notification_preference="S")
        self.selenium.implicitly_wait(10)
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/exchange/'))

    def tearDown(self):
        self.selenium.quit()

    def __get_page_1(self):
        class ExchangePage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.from_curr = Select(
                    self.selenium.find_element_by_id('id_currency'))
                self.to_curr = Select(
                    self.selenium.find_element_by_id('id_final_currency'))
                self.amount = self.selenium.find_element_by_id(
                    'id_final_amount')
                self.button = self.selenium.find_element_by_xpath(
                    "//button[@type='submit']")

        return ExchangePage(self.selenium)

    def __get_page_2(self):
        class ExchangePreviewPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.confirm_exchange = self.selenium.find_element_by_xpath(
                    "//button[@type='submit']")

        return ExchangePreviewPage(self.selenium)

    @staticmethod
    def _fill_1(page):
        page.amount.send_keys('1')
        page.from_curr.select_by_visible_text('﷼')
        page.to_curr.select_by_visible_text('$')

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/exchange/'))

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')

    def charge_wallet(self, amount):
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/charge/'))
        self.selenium.find_element_by_id('id_amount').send_keys(amount)
        self.selenium.find_element_by_id('charge-button').click()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/exchange/'))

    def test_preview_exchange_not_empty(self):
        self.login()
        page = self.__get_page_1()
        self._fill_1(page)

        page.amount.clear()
        page.button.click()
        success_set = self.selenium.find_elements_by_xpath(
            '//*[@id="right-panel"]/div[2]/div/div[1]/div/div')
        self.assertEqual(len(success_set), 0)
        page.amount.send_keys('1')

        page.from_curr.select_by_visible_text('---------')
        page.button.click()
        success_set = self.selenium.find_elements_by_xpath(
            '//*[@id="right-panel"]/div[2]/div/div[1]/div/div')
        self.assertEqual(len(success_set), 0)
        page.from_curr.select_by_visible_text('﷼')

        page.to_curr.select_by_visible_text('---------')
        page.button.click()
        success_set = self.selenium.find_elements_by_xpath(
            '//*[@id="right-panel"]/div[2]/div/div[1]/div/div')
        self.assertEqual(len(success_set), 0)
        page.to_curr.select_by_visible_text('$')

    def test_preview_exchange(self):
        self.login()
        self.charge_wallet(550000)
        page = self.__get_page_1()
        self._fill_1(page)
        page.button.click()
        self.selenium.implicitly_wait(10)
        self.assertIn("accept", self.selenium.current_url)

    def test_preview_accept(self):
        self.login()
        self.charge_wallet(550000)
        page = self.__get_page_1()
        self._fill_1(page)
        page.button.click()
        self.selenium.implicitly_wait(10)

        page2 = self.__get_page_2()
        page2.confirm_exchange.click()
        time.sleep(3)
        credit = self.selenium.find_element_by_id("wallet_balance_$")
        self.assertEqual(float(1), float(self.__get_text(credit)))
        self.assertNotIn("accept", self.selenium.current_url)
示例#7
0
class ReportTest(StaticLiveServerTestCase):
    def setUp(self):
        self.selenium = WebDriver()
        self.user = User.objects.create_superuser(
            username="******",
            email="*****@*****.**",
            password="******",
            first_name="kossar",
            last_name="najafi",
            phone_number="09147898557",
            account_number="1234567812345678",
            notification_preference="S")
        self.user = User.objects.create_user(username="******",
                                             email="*****@*****.**",
                                             password="******",
                                             first_name="kossar",
                                             last_name="najafi",
                                             phone_number="09147898557",
                                             account_number="1234432112344321",
                                             notification_preference="S")
        self.__create_transactions()
        self.selenium.implicitly_wait(10)
        self.selenium.get(
            '%s%s' % (self.live_server_url, '/admin_panel/transactions/1'))

    def tearDown(self):
        self.selenium.quit()

    @staticmethod
    def __create_transactions():
        user_k = User.objects.get(username="******")
        transaction1 = Transaction(owner=user_k, amount="300", currency="D")
        transaction1.save()

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get(
            '%s%s' % (self.live_server_url, '/admin_panel/transactions/1'))

    def __get_page(self):
        class ReportPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.comment = self.selenium.find_element_by_id('id_comment')
                self.selenium.execute_script(
                    "window.scrollTo(0, document.body.scrollHeight);")
                self.button = self.selenium.find_element_by_xpath(
                    "//button[@type='submit']")

        return ReportPage(self.selenium)

    @staticmethod
    def __send_keys_scrolling(input_element, keys):
        _ = input_element.location_once_scrolled_into_view
        time.sleep(1)
        input_element.send_keys(keys)

    def _fill(self, page):
        self.__send_keys_scrolling(page.comment, 'suspicious')

    def test_successful_report(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        self.selenium.get(
            '%s%s' % (self.live_server_url, '/admin_panel/transactions/1'))
        p = self.selenium.find_elements_by_tag_name('p')
        self.assertEqual(len(p), 0)

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')
示例#8
0
class EditTest(StaticLiveServerTestCase):
    fixtures = ['user_panel_data.json']

    def setUp(self):
        self.selenium = WebDriver()
        self.user = User.objects.create_user(username="******",
                                             email="*****@*****.**",
                                             password="******",
                                             first_name="kossar",
                                             last_name="najafi",
                                             phone_number="09147898557",
                                             account_number="1234432112344321",
                                             notification_preference="S")
        self.selenium.implicitly_wait(10)
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/profile/'))

    def tearDown(self):
        self.selenium.quit()

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/user_panel/profile/'))

    def __get_page(self):
        class EditPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.username = self.selenium.find_element_by_id('id_username')
                self.email = self.selenium.find_element_by_id('id_email')
                self.fname = self.selenium.find_element_by_id('id_first_name')
                self.lname = self.selenium.find_element_by_id('id_last_name')
                self.phone = self.selenium.find_element_by_id(
                    'id_phone_number')
                self.notification = Select(
                    self.selenium.find_element_by_id(
                        'id_notification_preference'))
                self.button = self.selenium.find_element_by_xpath(
                    "//button[@type='submit']")

        return EditPage(self.selenium)

    @staticmethod
    def _fill(page):
        page.username.clear()
        page.email.clear()
        page.fname.clear()
        page.lname.clear()
        page.phone.clear()

        page.username.send_keys('parand')
        page.email.send_keys('*****@*****.**')
        page.fname.send_keys('Parand')
        page.lname.send_keys('Alizadeh')
        page.phone.send_keys('02347898557')
        page.notification.select_by_visible_text('sms')

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')

    @staticmethod
    def __send_keys_scrolling(input_element, keys):
        _ = input_element.location_once_scrolled_into_view
        time.sleep(1)
        input_element.send_keys(keys)

    def test_empty_parts_edit(self):
        self.login()
        page = self.__get_page()
        username = page.username
        username.clear()
        button = page.button
        button.click()
        success_set = self.selenium.find_elements_by_xpath(
            '//*[@id="right-panel"]/div[2]/div/div[1]/div/div')
        self.assertEqual(len(success_set), 0)

    def test_successful_edit(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        success = self.selenium.find_element_by_xpath(
            '//*[@id="right-panel"]/div[2]/div/div[1]/div/div')
        self.assertIn("Profile successfully updated!",
                      self.__get_text(success))
示例#9
0
class RegistrationTest(StaticLiveServerTestCase):
    def setUp(self):
        self.selenium = WebDriver()
        self.selenium.implicitly_wait(10)
        self.__create_users()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/admin_panel/reviewers/add'))

    def tearDown(self):
        self.selenium.quit()
        pass

    def __create_users(self):
        self.user = User.objects.create_superuser(
            username="******",
            email="*****@*****.**",
            password="******",
            first_name="kossar",
            last_name="najafi",
            phone_number="09147898557",
            account_number="1234567812345678",
            notification_preference="S")
        self.user = User.objects.create_user(username="******",
                                             email="*****@*****.**",
                                             password="******",
                                             first_name="kossar",
                                             last_name="najafi",
                                             phone_number="09147898557",
                                             account_number="1234432112344321",
                                             notification_preference="S")
        self.user = User.objects.create_user(username="******",
                                             email="*****@*****.**",
                                             password="******",
                                             first_name="soroush",
                                             last_name="ebadian",
                                             phone_number="09147898557",
                                             account_number="1234567887654321",
                                             notification_preference="S")

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/admin_panel/reviewers/add'))

    def __get_page(self):
        class AddReviewerPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.username = Select(
                    self.selenium.find_element_by_id('id_user'))
                self.salary = self.selenium.find_element_by_id('id_salary')
                self.employee = self.selenium.find_element_by_id(
                    'id_is_employee')
                self.button = self.selenium.find_element_by_xpath(
                    "//button[@type='submit']")

        return AddReviewerPage(self.selenium)

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')

    @staticmethod
    def _fill(page):
        page.username.select_by_visible_text('kossar')
        page.salary.clear()
        page.salary.send_keys("2000")

    def test_successful_radd(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        self.assertNotIn("add", self.selenium.current_url)

    def test_empty_parts_add(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.username.select_by_visible_text("---------")
        page.button.click()
        self.assertIn("add", self.selenium.current_url)

    def test_already_existing_reviewer(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        self.selenium.get('%s%s' %
                          (self.live_server_url, '/admin_panel/reviewers/add'))
        page = self.__get_page()
        self._fill(page)
        page.button.click()
        self.assertIn("add", self.selenium.current_url)
示例#10
0
class NotifTest(StaticLiveServerTestCase):
    def setUp(self):
        self.selenium = WebDriver()
        self.user = User.objects.create_superuser(username="******",
                                                  email="*****@*****.**",
                                                  password="******",
                                                  first_name="kossar",
                                                  last_name="najafi",
                                                  phone_number="09147898557",
                                                  account_number="1234567812345678",
                                                  notification_preference="S")
        self.selenium.implicitly_wait(10)
        self.selenium.get('%s%s' % (self.live_server_url, '/admin_panel/send_notification/'))

    def tearDown(self):
        self.selenium.quit()

    def __get_page(self):
        class NotifPage(object):
            def __init__(self, selenium):
                self.selenium = selenium
                self.subject = self.selenium.find_element_by_id('id_subject')
                self.text = self.selenium.find_element_by_id("id_notification_text")
                buttons = self.selenium.find_elements_by_xpath("//button[@type='submit']")
                self.send_button = buttons[0]
                self.cancel_button = buttons[1]

        return NotifPage(self.selenium)

    def login(self):
        user = User.objects.get(username="******")
        SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
        session = SessionStore()
        session[SESSION_KEY] = User.objects.get(username="******").id
        session[BACKEND_SESSION_KEY] = settings.AUTHENTICATION_BACKENDS[0]
        session[HASH_SESSION_KEY] = user.get_session_auth_hash()
        session.save()

        cookie = {
            'name': settings.SESSION_COOKIE_NAME,
            'value': session.session_key,
            'path': '/',
        }

        self.selenium.add_cookie(cookie)
        self.selenium.refresh()
        self.selenium.get('%s%s' % (self.live_server_url, '/admin_panel/send_notification/'))

    @staticmethod
    def _fill(page):
        page.subject.send_keys('HEllO')
        page.text.send_keys('Hi! Welcome to Dollarial')

    def test_successful_notif(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.send_button.click()
        self.assertNotIn("send_notification", self.selenium.current_url)

    def test_cancel_notif(self):
        self.login()
        page = self.__get_page()
        page.cancel_button.click()
        self.assertNotIn("send_notification", self.selenium.current_url)

    @staticmethod
    def __get_text(element):
        return element.get_attribute('textContent')

    def test_empty_parts_add(self):
        self.login()
        page = self.__get_page()
        self._fill(page)
        page.subject.clear()
        page.send_button.click()
        self.assertIn("send_notification", self.selenium.current_url)
示例#11
0
        return True
    except:
        return False


try:
    wd.get("https://dev.vetmedical.ru/")
    wd.find_element_by_css_selector("#sign_in").click()
    wd.find_element_by_css_selector("#ips_username").click()
    wd.find_element_by_css_selector("#ips_username").clear()
    wd.find_element_by_css_selector("#ips_username").send_keys(
        "Alexander Podobulkin")
    wd.find_element_by_css_selector("#ips_password").click()
    wd.find_element_by_css_selector("#ips_password").clear()
    wd.find_element_by_css_selector("#ips_password").send_keys("210785ap")
    wd.find_element_by_css_selector("#b-login__submit-form").click()
    wd.refresh()
    wd.get(
        "https://dev.vetmedical.ru/index.php?/forum/9-%D0%BE%D0%B1%D1%89%D0%B8%D0%B5-%D0%BE%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D1%8F/"
    )
    wd.find_element_by_css_selector(
        "#tabs-container > header > div.b-control-buttons > a").click()
    if wd.find_element_by_css_selector(
            "#main > div > h1"
    ).text != "*Создание темы в разделе Общие обсуждения*":
        raise Exception("not assertText failed")
finally:
    wd.quit()
    if not success:
        raise Exception("Test failed.")
示例#12
0
文件: tests.py 项目: Chaalie/airlines
class FlightSeleniumTestCase(StaticLiveServerTestCase):
    fixtures = ['flights_tests.json']

    def setUp(self):
        user = User.objects.create_user(
            username='******',
            email='*****@*****.**',
            password='******',
        )
        user.first_name = 'Bruce'
        user.last_name = 'Wayne'
        user.save()
        flight = Flight(plane=Plane.objects.get(pk='Batman'),
                        start_date=datetime(2020,
                                            1,
                                            1,
                                            1,
                                            0,
                                            0,
                                            tzinfo=pytz.UTC),
                        end_date=datetime(2020, 1, 1, 6, 0, 0,
                                          tzinfo=pytz.UTC),
                        src_airport=Airport.objects.get(pk='WAW'),
                        dest_airport=Airport.objects.get(pk='TXL'))
        flight.save()
        flight = Flight(plane=Plane.objects.get(pk='Superman'),
                        start_date=datetime(2020,
                                            1,
                                            1,
                                            1,
                                            30,
                                            0,
                                            tzinfo=pytz.UTC),
                        end_date=datetime(2020,
                                          1,
                                          1,
                                          6,
                                          30,
                                          0,
                                          tzinfo=pytz.UTC),
                        src_airport=Airport.objects.get(pk='TXL'),
                        dest_airport=Airport.objects.get(pk='WAW'))
        flight.save()

        self.selenium = WebDriver()
        super(FlightSeleniumTestCase, self).setUp()

    def tearDown(self):
        self.selenium.quit()
        super(FlightSeleniumTestCase, self).tearDown()

    def test_add_passenger(self):
        self.selenium.get(self.live_server_url)

        # login first
        self.selenium.find_element_by_name('username').send_keys('user')
        self.selenium.find_element_by_name('password').send_keys('pass')
        self.selenium.find_element_by_css_selector(
            'input[type="submit"]').click()
        alert = self.selenium.find_element_by_class_name('alert')
        self.assertIn('alert-success', alert.get_attribute('class'))

        # move to flights menu and select first one
        self.selenium.find_element_by_link_text('Flights').click()
        self.selenium.find_element_by_link_text('1').click()

        # click 'Buy ticket' button and check if user shows up on list
        self.selenium.find_element_by_css_selector(
            'input[value="Buy ticket"]').click()
        self.selenium.find_element_by_xpath(
            '//*[@id="headingOne"]/button').click()
        name_td = self.selenium.find_element_by_xpath(
            '//*[@id="collapseOne"]/div/table/tbody/tr/td[2]')
        self.assertEquals('Bruce Wayne', name_td.text)

    def test_crew_add(self):
        crew = Crew(captain_firstname='Bruce', captain_lastname='Wayne')
        crew.save()
        cm = CrewMember(firstname='Clark', lastname='Kent')
        cm.save()
        crew.members.add(cm)
        crew.save()
        action_chains = ActionChains(self.selenium)
        self.selenium.get(self.live_server_url)

        # login first
        self.selenium.find_element_by_link_text('Crews').click()
        self.selenium.find_element_by_name('username').send_keys('user')
        self.selenium.find_element_by_name('password').send_keys('pass')
        self.selenium.find_element_by_xpath(
            '//*[@id="login-form"]/input[3]').click()
        WebDriverWait(
            self.selenium,
            3).until(lambda driver: driver.find_element_by_class_name('alert'))
        alert = self.selenium.find_element_by_class_name('alert')
        self.assertIn('alert-success', alert.get_attribute('class'))

        # setup date of flights
        self.selenium.find_element_by_id('choose-date').send_keys('2020-01-01')
        WebDriverWait(self.selenium,
                      3).until(lambda driver: driver.find_element_by_xpath(
                          '//*[@id="flights"]/tr[1]'))

        # double click on first flight
        row = self.selenium.find_element_by_xpath('//*[@id="flights"]/tr[1]')
        action_chains.double_click(row).perform()

        # choose first crew
        WebDriverWait(self.selenium,
                      3).until(lambda driver: driver.find_element_by_xpath(
                          '//*[@id="select-crew"]/option[2]'))
        self.selenium.find_element_by_xpath(
            '//*[@id="select-crew"]/option[2]').click()

        # send 'Change crew' and wait for change query to end
        self.selenium.find_element_by_xpath(
            '//*[@id="crew-form"]/div[7]/input').click()
        WebDriverWait(
            self.selenium,
            3).until(lambda driver: driver.find_element_by_class_name('alert'))
        alert = self.selenium.find_element_by_class_name('alert')
        self.assertIn('alert-success', alert.get_attribute('class'))

        # refresh page and check if crew changed
        self.selenium.refresh()
        action_chains = ActionChains(self.selenium)
        self.selenium.find_element_by_id('choose-date').send_keys('2020-01-01')
        WebDriverWait(self.selenium,
                      3).until(lambda driver: driver.find_element_by_xpath(
                          '//*[@id="flights"]/tr[1]'))
        new_crew = self.selenium.find_element_by_xpath(
            '//*[@id="flights"]/tr[1]/td[6]/span[@class="captain"]')
        self.assertEquals('Bruce Wayne', new_crew.text)

        # double click on second flight
        row2 = self.selenium.find_element_by_xpath('//*[@id="flights"]/tr[2]')
        action_chains.double_click(row2).perform()

        # choose first crew
        WebDriverWait(self.selenium,
                      3).until(lambda driver: driver.find_element_by_xpath(
                          '//*[@id="select-crew"]/option[2]'))
        self.selenium.find_element_by_xpath(
            '//*[@id="select-crew"]/option[2]').click()

        # send 'Change crew' and wait for change query to end
        self.selenium.find_element_by_xpath(
            '//*[@id="crew-form"]/div[7]/input').click()
        WebDriverWait(
            self.selenium,
            3).until(lambda driver: driver.find_element_by_class_name('alert'))
        alert = self.selenium.find_element_by_class_name('alert')
        self.assertIn('alert-danger', alert.get_attribute('class'))

        # check if crews didn't change
        self.selenium.refresh()
        self.selenium.find_element_by_id('choose-date').send_keys('2020-01-01')
        WebDriverWait(self.selenium,
                      3).until(lambda driver: driver.find_element_by_xpath(
                          '//*[@id="flights"]/tr[1]'))
        crew1 = self.selenium.find_element_by_xpath(
            '//*[@id="flights"]/tr[1]/td[6]/span[@class="captain"]')
        crew2 = self.selenium.find_element_by_xpath(
            '//*[@id="flights"]/tr[2]/td[6]/span[@class="captain"]')
        self.assertEquals('Bruce Wayne', crew1.text)
        self.assertEquals('None', crew2.text)