-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_sciebo_clean.py
More file actions
96 lines (79 loc) · 3.6 KB
/
test_sciebo_clean.py
File metadata and controls
96 lines (79 loc) · 3.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
""" Selenium tests for Sciebo
Author: Richard Freitag <freitag@sunet.se>
Selenium tests to log on to the Sciebo test node, performing various operations to ensure basic operation
"""
import xmlrunner
import unittest
import sunetnextcloud
import time
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.common.exceptions import TimeoutException
import os
# 'prod' for production environment, 'test' for test environment
g_testtarget = os.environ.get('NextcloudTestTarget')
g_sciebourl = 'https://sns-testing.sciebo.de'
g_driverTimeout = 30
class TestSciebo(unittest.TestCase):
def test_sciebo_rds_delete_projects(self):
sunetnextcloud.TestTarget(g_testtarget)
loginurl = g_sciebourl
print("Login url: ", loginurl)
sciebouserenv = "SCIEBO_USER"
sciebouser = os.environ.get(sciebouserenv)
sciebopwdenv = "SCIEBO_USER_PASSWORD"
nodepwd = os.environ.get(sciebopwdenv)
try:
options = Options()
driver = webdriver.Chrome(options=options)
except Exception as error:
self.logger.error(f'Error initializing Chrome driver: {error}')
self.assertTrue(False)
driver.maximize_window()
# driver2 = webdriver.Firefox()
driver.get(loginurl)
wait = WebDriverWait(driver, g_driverTimeout)
wait.until(EC.presence_of_element_located((By.ID, 'user'))).send_keys(sciebouser)
wait.until(EC.presence_of_element_located((By.ID, 'password'))).send_keys(nodepwd + Keys.ENTER)
try:
wait.until(EC.presence_of_element_located((By.LINK_TEXT, 'All files')))
print("All files visible!")
except TimeoutException:
print("Loading of all files took too much time!")
burgerButton = driver.find_element(by=By.CLASS_NAME, value='burger')
burgerButton.click()
time.sleep(1)
rdsAppButton = driver.find_element(by=By.XPATH, value='//a[@href="'+ '/apps/rds/' +'"]')
rdsAppButton.click()
time.sleep(1)
try:
print("Waiting for rds frame")
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "rds-editor")))
print("RDS iframe loaded")
except Exception as error:
print(f"RDS iframe not loaded: {error}")
# Projects
print("Select projects from menu")
WebDriverWait(driver, g_driverTimeout).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/div/nav/div[1]/div[2]/div/a[2]/div[2]/div[contains(text(),\'Projects\')]'))).click()
time.sleep(3)
deleteProjects = True
while deleteProjects:
try:
projectElement = driver.find_element(by=By.CLASS_NAME, value='my-1')
projectElement.click()
deleteButton = driver.find_element(by=By.XPATH, value='/html/body/div/div/div/main/div/div/main/div/div/div/div[2]/div/div/div/div[3]/div/button/span')
deleteButton.click()
print("Deleting existing entries")
time.sleep(1)
except Exception as error:
print(f"No more entries to delete, continue: {error}")
deleteProjects = False
print("Done...")
time.sleep(3)
if __name__ == '__main__':
# unittest.main()
unittest.main(testRunner=xmlrunner.XMLTestRunner(output='test-reports'))