|
import allure
|
|
from selenium.common import NoSuchElementException
|
|
from selenium.webdriver.common.by import By
|
|
|
|
from page.home_page import HomePage
|
|
from utils.logger import logger
|
|
|
|
|
|
class ProjectPage(HomePage):
|
|
_PROJECT_MODULE = {
|
|
'问题跟踪': (By.CSS_SELECTOR, "#project_enabled_module_names_issue_tracking"),
|
|
'时间跟踪': (By.CSS_SELECTOR, "#project_enabled_module_names_time_tracking"),
|
|
'新闻': (By.CSS_SELECTOR, "#project_enabled_module_names_news"),
|
|
'文档': (By.CSS_SELECTOR, "#project_enabled_module_names_documents"),
|
|
'文件': (By.CSS_SELECTOR, "#project_enabled_module_names_files"),
|
|
'Wiki': (By.CSS_SELECTOR, "#project_enabled_module_names_wiki"),
|
|
'版本库': (By.CSS_SELECTOR, "#project_enabled_module_names_repository"),
|
|
'讨论区': (By.CSS_SELECTOR, "#project_enabled_module_names_boards"),
|
|
'日历': (By.CSS_SELECTOR, "#project_enabled_module_names_calendar"),
|
|
'甘特图': (By.CSS_SELECTOR, "#project_enabled_module_names_gantt")
|
|
}
|
|
_ADD_PROJECT = (By.CSS_SELECTOR, ".icon.icon-add")
|
|
_SAVE = (By.CSS_SELECTOR, "[name='commit']")
|
|
_NAME = (By.CSS_SELECTOR, "#project_name")
|
|
_IDENTIFIER = (By.CSS_SELECTOR, "#project_identifier")
|
|
_DESCRIPTION = (By.CSS_SELECTOR, "#project_description")
|
|
_HOMEPAGE = (By.CSS_SELECTOR, "#project_homepage")
|
|
_OVERVIEW = (By.CSS_SELECTOR, ".overview")
|
|
|
|
@allure.step("点击新建项目")
|
|
def add_project(self):
|
|
logger.info("点击新建项目")
|
|
self.find_and_click(*self._ADD_PROJECT)
|
|
return self
|
|
|
|
def write_project_messages(self, project_name, project_identifier=None, description=None, homepage=None):
|
|
logger.info(f"输入项目名称:{project_name}")
|
|
if project_name:
|
|
with allure.step(f"创建项目,输入项目名称:{project_name}"):
|
|
self.find_and_send(project_name, *self._NAME)
|
|
if project_identifier:
|
|
logger.info(f"输入项目标识:{project_identifier}")
|
|
self.find_and_send(project_identifier, *self._IDENTIFIER)
|
|
if description:
|
|
logger.info(f"输入项目描述:{description}")
|
|
self.find_and_send(description, *self._DESCRIPTION)
|
|
if homepage:
|
|
logger.info(f"输入项目主页:{homepage}")
|
|
self.find_and_send(homepage, *self._HOMEPAGE)
|
|
return self
|
|
|
|
@allure.step("点击创建按钮")
|
|
def click_save(self):
|
|
"""点击创建按钮"""
|
|
logger.info("点击创建按钮")
|
|
self.find_and_click(*self._SAVE)
|
|
return self
|
|
|
|
@allure.step("获取项目的标识")
|
|
def get_project_identifier(self):
|
|
logger.info("获取项目的标识")
|
|
return self.get_attribute(*self._IDENTIFIER, attribute='value')
|
|
|
|
def get_identifier_attribute(self):
|
|
logger.info("获取标识输入框的状态")
|
|
return self.get_attribute(*self._IDENTIFIER, attribute='disabled')
|
|
|
|
@allure.step("前往概述页面")
|
|
def to_overview(self):
|
|
self.set_time(1)
|
|
logger.info("前往概述页面")
|
|
self.find_and_click(*self._OVERVIEW)
|
|
return self
|
|
|
|
def get_overview_page_message(self):
|
|
logger.info("获取概述页面的内容")
|
|
_WIKI = (By.CSS_SELECTOR, ".wiki>p")
|
|
_HOME = (By.XPATH, "//*[@class='label']/..//a")
|
|
_PROJECT_NAME = (By.CSS_SELECTOR, ".current-project")
|
|
data = {'wiki': self.get_text(*_WIKI), 'home': self.get_text(*_HOME), 'name': self.get_text(*_PROJECT_NAME)}
|
|
logger.info(f"获取的页面信息为:{data}")
|
|
return data
|
|
|
|
@allure.step("修改模块内容")
|
|
def update_module(self, module_list: list):
|
|
# 默认是开启的,更改是关闭对应模块的开关
|
|
for m in module_list:
|
|
data = self._PROJECT_MODULE.get(m)
|
|
self.find_and_click(*data)
|
|
return self
|
|
|
|
@allure.step("获取页面的模块")
|
|
def get_module(self) -> list:
|
|
self.set_time(1)
|
|
r = []
|
|
for m in self._PROJECT_MODULE:
|
|
logger.info(f"获取{m}模块")
|
|
try:
|
|
self.find(By.XPATH, f"//a[text()='{m}']")
|
|
except NoSuchElementException:
|
|
logger.warning("模块未找到")
|
|
r.append(m)
|
|
return r
|
|
|
|
@allure.step("更新项目信息")
|
|
def update_project(self, project_name, description=None, homepage=None):
|
|
logger.info(f"输入项目名称:{project_name}")
|
|
if project_name:
|
|
with allure.step(f"创建项目,输入项目名称:{project_name}"):
|
|
self.find_and_send(project_name, *self._NAME)
|
|
if description:
|
|
logger.info(f"输入项目描述:{description}")
|
|
self.find_and_send(description, *self._DESCRIPTION)
|
|
if homepage:
|
|
logger.info(f"输入项目主页:{homepage}")
|
|
self.find_and_send(homepage, *self._HOMEPAGE)
|
|
return self
|
|
|
|
|