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.
 
 
 
 
 
 

53 lines
1.9 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 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.Chrome()
@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):
tt = TempToken.objects.create(user=user)
self.driver.get('%s?temp-token=%s' % (self.get_url(), tt.key))