webinventory_tests/selenium/dashboard_test.py
2018-09-10 22:55:13 +03:00

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)