102 lines
3.9 KiB
Python
102 lines
3.9 KiB
Python
from types import SimpleNamespace
|
|
from appium.webdriver.common.appiumby import AppiumBy as By
|
|
|
|
from helpers.AppHelper import app
|
|
|
|
|
|
class Settings:
|
|
CHECKBOX_OPTION_ITEM = SimpleNamespace(by=None, selector=None)
|
|
NETWORK_OPTION_ITEM = SimpleNamespace(by=None, selector=None)
|
|
ABOUT_BUTTON = SimpleNamespace(by=By.NAME, selector="About")
|
|
ABOUT_DIALOG = SimpleNamespace(by=By.CLASS_NAME, selector="[page tab | About]")
|
|
ABOUT_DIALOG_OK_BUTTON = SimpleNamespace(by=By.NAME, selector="OK")
|
|
GENERAL_SETTING_START_ON_LOGIN = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel/*[@name='Start QSfera when I sign in']"
|
|
)
|
|
GENERAL_SETTING_LANGUAGE = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel/label[@name='Language']"
|
|
)
|
|
ADVANCED_SETTING_SYNC_HIDDEN_FILES = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel/*[@name='Sync hidden files and folders']"
|
|
)
|
|
ADVANCED_SETTING_EDIT_IGNORED_FILES = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel/*[@name='Ignored files']"
|
|
)
|
|
ADVANCED_SETTING_LOG_SETTINGS = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel/*[@name='Logs']"
|
|
)
|
|
NETWORK_SETTING_DOWNLOAD_BANDWIDTH = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel[@name='Download Bandwidth']"
|
|
)
|
|
NETWORK_SETTING_UPLOAD_BANDWIDTH = SimpleNamespace(
|
|
by=By.XPATH, selector="//panel[@name='Upload Bandwidth']"
|
|
)
|
|
|
|
@staticmethod
|
|
def get_checkbox_option_selector(name):
|
|
selector = Settings.CHECKBOX_OPTION_ITEM.copy()
|
|
selector.update({"name": name})
|
|
if name == "languageDropdown":
|
|
selector.update({"type": "QComboBox"})
|
|
elif name in ("ignoredFilesButton", "logSettingsButton"):
|
|
selector.update({"type": "QPushButton"})
|
|
return selector
|
|
|
|
@staticmethod
|
|
def get_network_option_selector(name):
|
|
selector = Settings.NETWORK_OPTION_ITEM.copy()
|
|
selector.update({"name": name})
|
|
return selector
|
|
|
|
@staticmethod
|
|
def has_general_setting(setting):
|
|
if setting.lower() == "start qsfera when i sign in":
|
|
locator = Settings.GENERAL_SETTING_START_ON_LOGIN
|
|
elif setting.lower() == "language":
|
|
locator = Settings.GENERAL_SETTING_LANGUAGE
|
|
else:
|
|
raise ValueError(f"Unknown general setting: {setting}")
|
|
return app().find_element(locator.by, locator.selector).is_displayed()
|
|
|
|
@staticmethod
|
|
def has_advanced_setting(setting):
|
|
if setting.lower() == "sync hidden files and folders":
|
|
locator = Settings.ADVANCED_SETTING_SYNC_HIDDEN_FILES
|
|
elif setting.lower() == "ignored files":
|
|
locator = Settings.ADVANCED_SETTING_EDIT_IGNORED_FILES
|
|
elif setting.lower() == "logs":
|
|
locator = Settings.ADVANCED_SETTING_LOG_SETTINGS
|
|
else:
|
|
raise ValueError(f"Unknown advanced setting: {setting}")
|
|
return app().find_element(locator.by, locator.selector).is_displayed()
|
|
|
|
@staticmethod
|
|
def has_network_setting(setting):
|
|
if setting.lower() == "download bandwidth":
|
|
locator = Settings.NETWORK_SETTING_DOWNLOAD_BANDWIDTH
|
|
elif setting.lower() == "upload bandwidth":
|
|
locator = Settings.NETWORK_SETTING_UPLOAD_BANDWIDTH
|
|
else:
|
|
raise ValueError(f"Unknown network setting: {setting}")
|
|
return app().find_element(locator.by, locator.selector).is_displayed()
|
|
|
|
@staticmethod
|
|
def open_about_dialog():
|
|
app().find_element(
|
|
Settings.ABOUT_BUTTON.by, Settings.ABOUT_BUTTON.selector
|
|
).click()
|
|
|
|
@staticmethod
|
|
def has_about_dialog():
|
|
return (
|
|
app()
|
|
.find_element(Settings.ABOUT_DIALOG.by, Settings.ABOUT_DIALOG.selector)
|
|
.is_displayed()
|
|
)
|
|
|
|
@staticmethod
|
|
def close_about_dialog():
|
|
app().find_element(
|
|
Settings.ABOUT_DIALOG_OK_BUTTON.by, Settings.ABOUT_DIALOG_OK_BUTTON.selector
|
|
).click()
|