Skip to content

Commit bf1cd87

Browse files
committed
Add dashboard automation support for enhanced functionality
Signed-off-by: nrao <[email protected]>
1 parent 4083994 commit bf1cd87

File tree

5 files changed

+58
-96
lines changed

5 files changed

+58
-96
lines changed

ceph/UI/browser.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
from selenium import webdriver
2+
3+
4+
class Browser:
5+
def __init__(self, browser_type: str = "chrome"):
6+
"""
7+
Initializes the Browser with the specified browser type.
8+
:param browser_type: The type of browser to use ('chrome', 'firefox', etc.). Defaults to 'chrome'.
9+
"""
10+
if browser_type.lower() == "chrome":
11+
self.driver = webdriver.Chrome()
12+
elif browser_type.lower() == "firefox":
13+
self.driver = webdriver.Firefox()
14+
else:
15+
raise ValueError(
16+
f"Unsupported browser type: {browser_type}. Supported types are 'chrome' and 'firefox'."
17+
)

ceph/UI/config/login.yaml

-23
This file was deleted.

ceph/UI/dashboard.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
from selenium.webdriver.support import expected_conditions as EC
2+
3+
# from selenium.webdriver.common.by import By
4+
from selenium.webdriver.support.ui import WebDriverWait
5+
6+
from ceph.UI.browser import Browser
7+
8+
# from selenium.common.exceptions import TimeoutException
9+
from ceph.UI.ids import ElementIDs
10+
11+
12+
class Dashboard:
13+
def __init__(self, browser_type: str = "chrome"):
14+
self.browser = Browser(browser_type)
15+
self.driver = self.browser.driver
16+
self.element_ids = None # ElementIDs instance will be set dynamically
17+
18+
def load_elements(self, yaml_file_path: str):
19+
self.element_ids = ElementIDs(yaml_file_path)
20+
21+
def open(self, url: str):
22+
if not isinstance(url, str):
23+
raise ValueError("A valid URL must be provided.")
24+
self.driver.get(url)
25+
26+
def is_element_visible(self, key: str, timeout: int = 10) -> bool:
27+
element = self.find_element(key, timeout)
28+
return element.is_displayed() if element else False
29+
30+
def find_element(self, key: str, timeout: int = 10):
31+
if not self.element_ids:
32+
raise RuntimeError("ElementIDs not loaded. Use 'load_elements' first.")
33+
return self.element_ids.get_element(key, self.driver, timeout)
34+
35+
def click(self, key: str, timeout: int = 10):
36+
element = self.find_element(key, timeout)
37+
WebDriverWait(self.driver, timeout).until(EC.element_to_be_clickable(element))
38+
element.click()
39+
40+
def quit(self):
41+
self.driver.quit()

ceph/UI/ids.py

-34
This file was deleted.

ceph/UI/utilities.py

-39
This file was deleted.

0 commit comments

Comments
 (0)