阳洁
2023-07-28 ddf66cf155af3805323ec55ae6814f2d23d40c07
po/home_page.py
@@ -1,5 +1,6 @@
from base.base_page import BasePage
from selenium.webdriver.common.by import By
from elements.home_elements import HomeElements
import time
@@ -7,6 +8,20 @@
    """
    主页面侧边栏菜单与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):
        """
@@ -29,19 +44,34 @@
        if is_first:
            # 菜单元素定位
            menu_loc = (By.XPATH, "//ul[@id='side-menu']//span[text()='" + menu + "']")
            # 获取菜单元素
            menu_element = self.get_element(menu_loc)
            # 点击菜单
            menu_element.click()
            time.sleep(1)
            # 菜单下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_element = self.get_element(menu_loc)
            # 点击菜单
            menu_element.click()
            time.sleep(1)
            # 判断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:
            # 获取/第一次出现的位置
@@ -50,3 +80,14 @@
            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()