from base.base_page import BasePage
|
from selenium.webdriver.common.by import By
|
from elements.home_elements import HomeElements
|
import time
|
|
|
class HomePage(BasePage):
|
"""
|
主页面侧边栏菜单与tab栏操作页面
|
"""
|
|
es = HomeElements
|
|
def __init__(self, driver):
|
super().__init__(driver)
|
self.driver = driver
|
# 切换到最顶层的文档
|
driver.switch_to.default_content()
|
|
def logout(self):
|
# 点击第三个用户菜单
|
self.click(self.es.user_menu_3)
|
# 点击登出
|
self.click(self.es.logout_btn)
|
|
def menu_select(self, menu_text, is_first=True):
|
"""
|
选择菜单
|
:param menu_text: 菜单选项内容,使用 / 分隔上下级菜单
|
:param is_first: 是否为一级菜单,默认为True
|
:return:
|
"""
|
# 判断menu_text是否包含/
|
if "/" in menu_text:
|
# 包含 / 获取到第一个/前的菜单选项
|
# 获取/第一次出现的位置
|
index = menu_text.find("/")
|
# 截取要点击的菜单选项
|
menu = menu_text[0:index]
|
else:
|
menu = menu_text
|
|
# 判断是否一级菜单
|
if is_first:
|
# 菜单元素定位
|
menu_loc = (By.XPATH, "//ul[@id='side-menu']//span[text()='" + menu + "']")
|
# 菜单下ul定位
|
menu_ul_loc = (By.XPATH, "//ul[@id='side-menu']//span[text()='" + menu + "']/../../ul")
|
# 获取到ul元素
|
ul = self.get_ele(menu_ul_loc)
|
# 获取ul的class属性
|
ul_class = ul.get_attribute("class")
|
# 判断class是否包含in字符串
|
if "in" not in ul_class:
|
# 不包含则为未打开状态,可以点击
|
self.click(menu_loc, timeout=10)
|
else:
|
# 菜单元素定位
|
menu_loc = (By.XPATH, "//ul[@id='side-menu']//a[text()='" + menu + "']")
|
# 判断menu_text是否还包含/
|
if "/" in menu_text:
|
# 包含则表示还有下级菜单,判断下级菜单是否为展开状态
|
# 菜单下ul定位
|
menu_ul_loc = (By.XPATH, "//ul[@id='side-menu']//a[text()='" + menu + "']/../ul")
|
# 获取到ul元素
|
ul = self.get_ele(menu_ul_loc)
|
# 获取ul的class属性
|
ul_class = ul.get_attribute("class")
|
# 判断class是否包含in字符串
|
if "in" not in ul_class:
|
# 不包含则为未打开状态,可以点击
|
self.click(menu_loc, timeout=10)
|
else:
|
self.click(menu_loc, timeout=10)
|
|
if "/" in menu_text:
|
# 获取/第一次出现的位置
|
index = menu_text.find("/")
|
# 截取剩余的菜单内容
|
menu_text = menu_text[index + 1: len(menu_text)]
|
# 递归调用
|
self.menu_select(menu_text, False)
|
|
|
|
def close_tab(self, tab_name):
|
"""关闭页面tab"""
|
# 获取所有tab
|
tabs = self.get_eles(self.es.nav_tabs)
|
for tab in tabs:
|
if tab.text == tab_name:
|
# 点击关闭图标
|
tab.find_element(By.XPATH, "i").click()
|