阳洁
2023-07-13 b9c5276ec40e2e80d4958a126c377b171b5baa43
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from base.base_page import BasePage
from selenium.webdriver.common.by import By
import time
 
 
class HomePage(BasePage):
    """
    主页面侧边栏菜单与tab栏操作页面
    """
 
    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 + "']")
            # 获取菜单元素
            menu_element = self.get_element(menu_loc)
            # 点击菜单
            menu_element.click()
            time.sleep(1)
        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)
 
        if "/" in menu_text:
            # 获取/第一次出现的位置
            index = menu_text.find("/")
            # 截取剩余的菜单内容
            menu_text = menu_text[index + 1: len(menu_text)]
            # 递归调用
            self.menu_select(menu_text, False)