import time from django.contrib.staticfiles.testing import StaticLiveServerTestCase # from selenium.webdriver.chrome.webdriver import WebDriver from selenium.webdriver.firefox.webdriver import WebDriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from api.models import Inventory from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import os import socket # os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = '0.0.0.0:80' class DashboardSeleniumTests(StaticLiveServerTestCase): fixtures = ["tests/selenium/user.json"] # live_server_url = 'localhost' # live_server_url = 'http://{}:8000'.format( # socket.gethostbyname(socket.gethostname()) # ) # host = socket.gethostbyname(socket.gethostname()) host = 'web' @classmethod def setUpClass(cls): super().setUpClass() # cls.selenium = WebDriver() # cls.selenium.implicitly_wait(1) # cls.selenium.maximize_window() capabilities = DesiredCapabilities.CHROME.copy() # cls.selenium = webdriver.Remote( command_executor="http://selenium:4444/wd/hub", desired_capabilities=capabilities ) cls.selenium.implicitly_wait(1) @classmethod def tearDownClass(cls): cls.selenium.quit() super().tearDownClass() def test_workflow(self): wait = 0.5 self.selenium.get('%s%s' % (self.live_server_url, '/dashboard/')) print(self.live_server_url) self.selenium.save_screenshot('screen.png') print('done??') # self.assertEqual(self.selenium.current_url, '%s%s' % (self.live_server_url, '/login/?next=/dashboard/')) name = self.selenium.find_element_by_xpath('//*[@id="id_username"]') name.send_keys("tester") password = self.selenium.find_element_by_xpath('//*[@id="id_password"]') password.send_keys("tester123") button = self.selenium.find_element_by_xpath('//*[@id="login"]') button.click() # create inv self.selenium.find_element_by_xpath('//*[@id="addInv"]').click() self.selenium.find_element_by_css_selector('input[type="text"]').send_keys("tester123", Keys.RETURN) # WebDriverWait(self.selenium, 10).until( # lambda driver: self.selenium.find_element_by_xpath('//*[@id="ui-id-1"]/li/div[contains(text(), "tester123")]') # ) # i = [] # while len(i) == 0: # i = Inventory.objects.filter(inventory='tester123') # print(i) time.sleep(wait) # select inv self.selenium.find_element_by_css_selector('#eb div.ui-widget a span').click() # time.sleep(100) self.selenium.find_element_by_xpath('//*[@id="ui-id-1"]/li/div[contains(text(), "tester123")]').click() # create gr time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="addGr"]').click() self.selenium.find_element_by_css_selector('input[type="text"]').send_keys("test_group", Keys.RETURN) # select gr time.sleep(wait) elem = self.selenium.find_element_by_css_selector('#sidepanel div.ui-widget a span') elem.click() # self.selenium.find_element_by_css_selector('#sidepanel div.ui-widget a span').click() time.sleep(wait) self.selenium.find_element_by_xpath('//*[ @ id = "ui-id-{}"]/li/div[contains(text(), "test_group")]'.format(2)).click() # except Exception as e: # print(e) # time.sleep(wait) # create mach self.selenium.find_element_by_xpath('//*[@id="eb"]/div[1]/a').click() time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="modal_content"]/h2/button').click() # time.sleep(wait) self.selenium.find_element_by_css_selector('#machform input[type="text"]').send_keys("test_mach", Keys.RETURN) # WebDriverWait(driver, 10).until(lambda driver: driver.find_element_by_xpath('//*[@id="modal_content"]/a')) # time.sleep(wait) time.sleep(1) self.selenium.find_element_by_xpath('//*[@id="modal_content"]/a').click() time.sleep(wait) # create var self.selenium.find_element_by_css_selector('#vars > button.plus').click() # time.sleep(wait) self.selenium.find_element_by_css_selector('#vars input[name="newVar"]').send_keys("test_var", Keys.RETURN) # time.sleep(wait) # self.selenium.find_element_by_css_selector('#vars input[name="newVal"]').send_keys("test_val") time.sleep(wait) # TODO add value # create host self.selenium.find_element_by_css_selector('#hosts > button.plus').click() self.selenium.find_element_by_css_selector('#hostform a span').click() time.sleep(wait) self.selenium.find_element_by_css_selector('ul.ui-menu:nth-of-type(3) li div').click() # self.selenium.find_element_by_xpath('//*ul[3]/li/div[contains(text(), "test_mach")]').click() # time.sleep(wait) self.selenium.find_element_by_css_selector('#hostform button').click() # create gr # time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="addGr"]').click() self.selenium.find_element_by_css_selector('input[type="text"]').send_keys("test_child", Keys.RETURN) # create child time.sleep(1) self.selenium.find_element_by_css_selector('#groups > button.plus').click() self.selenium.find_element_by_css_selector('#child a span').click() time.sleep(wait) self.selenium.find_element_by_css_selector('ul.ui-menu:nth-of-type(3) li div').click() # self.selenium.find_element_by_xpath('//*[@id="ui-id-18"]/li/div[contains(text(), "test_child")]').click() # time.sleep(wait) self.selenium.find_element_by_css_selector('#child button').click() time.sleep(wait) # del child self.selenium.find_element_by_xpath('//*[@id="groups"]/table/tbody/tr/td[2]/a').click() # del host self.selenium.find_element_by_xpath('//*[@id="hosts"]/table/tbody/tr/td[2]/a').click() # del var self.selenium.find_element_by_xpath('//*[@id="vars"]/table/tbody/tr/td[3]/a').click() # del gr time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="delGr"]').click() # del inv time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="delInv"]').click() time.sleep(wait) # del mach self.selenium.find_element_by_xpath('//*[@id="eb"]/div[1]/a').click() time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="modal_content"]/table/tbody/tr[1]/td[2]/button').click() time.sleep(wait) self.selenium.find_element_by_xpath('//*[@id="modal_content"]/a').click() time.sleep(wait)