You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
65 lines
2.3 KiB
from django.test import LiveServerTestCase
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.by import By
|
|
from pyvirtualdisplay import Display
|
|
from django.conf import settings
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
|
|
from project.utils.selenium_utils import SeleniumExtensions as SE
|
|
from apps.auth.models import TempToken
|
|
|
|
|
|
class SeleniumTestCase(LiveServerTestCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.display = Display(visible=0, size=(1280, 1024))
|
|
cls.display.start()
|
|
cls.driver = webdriver.Firefox()
|
|
|
|
@classmethod
|
|
def tearDownClass(cls):
|
|
cls.driver.quit()
|
|
cls.display.stop()
|
|
super().tearDownClass()
|
|
|
|
def get_url(self, url=''):
|
|
return '%s%s' % (self.live_server_url, url)
|
|
|
|
def wait_elem_xpath(self, xpath, inside_el=None, wait_time=10):
|
|
return SE.wait_elem(self.driver, (By.XPATH, xpath), inside_el, wait_time)
|
|
|
|
def wait_elems_xpath(self, xpath, inside_el=None, wait_time=10):
|
|
return SE.wait_elems(self.driver, (By.XPATH, xpath), inside_el, wait_time)
|
|
|
|
def wait_elem_css(self, selector, inside_el=None, wait_time=10):
|
|
return SE.wait_elem(self.driver, (By.CSS_SELECTOR, selector), inside_el, wait_time)
|
|
|
|
def wait_elems_css(self, selector, inside_el=None, wait_time=10):
|
|
return SE.wait_elems(self.driver, (By.CSS_SELECTOR, selector), inside_el, wait_time)
|
|
|
|
def wait_elem_name(self, name, inside_el=None, wait_time=10):
|
|
return SE.wait_elem(self.driver, (By.NAME, name), inside_el, wait_time)
|
|
|
|
def wait_elem_id(self, id, inside_el=None, wait_time=10):
|
|
return SE.wait_elem(self.driver, (By.ID, id), inside_el, wait_time)
|
|
|
|
def wait_elems_name(self, name, inside_el=None, wait_time=10):
|
|
return SE.wait_elems(self.driver, (By.NAME, name), inside_el, wait_time)
|
|
|
|
def login(self, user):
|
|
TempToken.objects.all().delete()
|
|
tt = TempToken.objects.create(user=user)
|
|
self.driver.get('%s?temp-token=%s' % (self.get_url(), tt.key))
|
|
|
|
def add_requests_log(self):
|
|
SE.add_requests_log(self.driver)
|
|
|
|
def get_requests(self):
|
|
return SE.get_requests(self.driver)
|
|
|
|
def wait_for_request(self, path, wait_time=10):
|
|
return SE.wait_for_request(self.driver, path, wait_time)
|
|
|
|
|