170 lines
6.9 KiB
Python
170 lines
6.9 KiB
Python
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)
|