Project

General

Profile

Files » project_page.py

UserName LastName, 07/14/2024 02:53 PM

 
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


(932-932/982)