def create_peer_or_next_group(self, group_name=None, parent_name="Default", is_peer=True, is_confirm=True):
        """
        创建同级/下一级分组
        :param group_name: 当前需要创建的分组名
        :param parent_name: 通过哪个父级分组来创建,默认通过Default分组创建
        :param is_peer: 创建同级/下一级,默认同级
        """

        if is_peer:
            """ 如果创建同级,先点击分组名,然后滑动该分组进行menu菜单的选择和点击"""
            GroupTreePage(self.driver).click_group_by_name(parent_name)
            GroupTreePage(self.driver).click_menu_name_by_move_icon(parent_name, menu_name="创建同级")
            if is_confirm:
                # 通过dialog对话框 - 创建同级
                DialogPage(self.driver).create_group_by_dialog_title_name(loc_by_til="创建同级", group_name=group_name)
            else:
                DialogPage(self.driver).create_group_by_dialog_title_name(loc_by_til="创建同级", group_name=group_name, is_confirm=False)
        else:
            """ 否则创建下一级,先点击父级分组名,然后滑动该分组进行menu菜单的选择和点击"""
            GroupTreePage(self.driver).click_group_by_name(parent_name)
            # 滑动到icon并选择创建下一级分组
            GroupTreePage(self.driver).click_menu_name_by_move_icon(parent_name, menu_name="创建下一级")
            if is_confirm:
                # 通过dialog对话框 - 创建下一级
                DialogPage(self.driver).create_group_by_dialog_title_name(loc_by_til="创建下一级", group_name=group_name)
            else:
                DialogPage(self.driver).create_group_by_dialog_title_name(loc_by_til="创建下一级", group_name=group_name, is_confirm=False)
    def delete_peer_or_next_group_by_name(self, module_val, group_name=None, parent_name="Default", is_peer=True, is_delete=True):
        """
        通过组名称删除分组
        :param module_val: 指定删除操作的模块名 - 由于前端页面元素标签定位不同
        :param group_name: 子级分组
        :param parent_name: 父级分组
        :param is_peer: 判断删除父级/子级分组,默认删除父级
        :param is_delete: 判断点击删除还是取消按钮,默认删除
        """
        if is_peer:
            # 点击分组名
            GroupTreePage(self.driver).click_group_by_name(parent_name)

            # 滑动到icon并点击删除
            GroupTreePage(self.driver).click_menu_name_by_move_icon(parent_name, "删除")
        else:

            # 点击父级分组,出现子级分组列表
            GroupTreePage(self.driver).click_group_by_name(group_name=parent_name)
            # 点击子级分组
            GroupTreePage(self.driver).click_group_by_name(group_name=group_name)

            # 滑动到icon并点击删除
            GroupTreePage(self.driver).click_menu_name_by_move_icon(group_name, "删除")

        if is_delete:
            # 点击删除按钮
            DialogPage(self.driver).is_delete_or_cancel(module_val)
        else:
            # 点击取消按钮
            DialogPage(self.driver).is_delete_or_cancel(module_val, is_delete=False)
Example #3
0
 def add_task_by_type(self, task, task_type, is_confirm=True):
     # 点击任务左侧菜单
     self.click_left_menu(menu_name=task_type)
     # 点击添加任务按钮
     self.click_add_task_btn()
     # 选择任务类型 - 通过选择延长下面列表的加载时间
     self.select_task_type(task_type=task_type)  # 点击了左侧的任务列表,此处会默认选中当前任务
     """ 开始添加任务界面的基础共用操作:任务名称、设备名称、设备分组,选择特殊属性 """
     self.task_basic_set(task)
     if task_type == "车辆-违停检测任务":
         # 设置违停时限
         self.input_park_time()
         # 绘制违停区域
         self.draw_park_region()
     elif task_type == "人体-区域闯入检测任务":
         # 绘制违停区域
         self.draw_park_region()
     elif task_type == "人体-越线检测任务":
         # 绘制告警线
         self.draw_park_region(default="line")
     # 点击确认或取消按钮
     if is_confirm:
         DialogPage(self.driver).is_confirm_or_cancel("添加任务")
     else:
         DialogPage(self.driver).is_confirm_or_cancel("添加任务",
                                                      is_confirm=False)
    def add_device_by_type(self, device, device_type, is_confirm=True):
        """
        通过指定类型来添加不同的设备
        :param device: 设备实例
        :param device_type: 设备类型,默认为网络摄像机,可选人脸识别机(后)、人脸抓拍机、身份验证一体机、人脸识别机(前)
        :param is_confirm: 是否确认,默认为确认
        """

        # 点击添加设备按钮
        self.click_add_device_btn()
        # 选择设备类型
        self.select_device_type(device_type=device_type)
        """ 开始添加设备界面的基础共用操作:设备名称、设备id、设备分组,指定地图分组,给设备标注点位 """
        self.device_basic_set(device)

        if device_type == "网络摄像机":
            # 选择camera的类型,有RTSP和ONVIF两种类型
            self.select_camera_type()
            if isinstance(device, Rtsp):
                # 输入rtsp的地址
                self.input_rtsp_address(device.rtsp_address)
                """ 编码类型和传输协议使用默认 """
            # elif isinstance(device, ONVIF):
            elif isinstance(device, Rtsp):
                pass
        elif type == "人脸识别机(前)":
            pass
        elif type == '人脸抓拍机':
            pass

        # 点击确定或取消按钮
        if is_confirm:
            DialogPage(self.driver).is_confirm_or_cancel("添加设备")
        else:
            DialogPage(self.driver).is_confirm_or_cancel("添加设备", is_confirm)
Example #5
0
 def delete_or_rename_timezone_name(self, timezone_name, flag="删除"):
     """ 删除时间条件 """
     # 定位到当前时间条件名称
     SELECT_TIMEZONE = (
         By.XPATH,
         f'//div[@role="tablist"]//button/span[contains(text(), "{timezone_name}")]'
     )
     BasePage(self.driver).mouse_move_ele(SELECT_TIMEZONE)
     if flag == "重命名":
         # TODO
         ELE_LOC = (
             By.XPATH,
             '//div[@role="tooltip"  and contains(@style, "position")]//span[contains(text(), "重命名")]'
         )
         BasePage(self.driver).mouse_move_ele_and_click(
             SELECT_TIMEZONE, ELE_LOC)
         # 执行重命名操作
         self.dialog_info_com("重命名时间条件", "UPDATE" + timezone_name)
     elif flag == "删除":
         # 定位到 "删除" 元素
         ELE_LOC = (
             By.XPATH,
             '//div[@role="tooltip"  and contains(@style, "position")]//span[contains(text(), "删除")]'
         )
         time.sleep(2)
         BasePage(self.driver).mouse_move_ele_and_click(
             SELECT_TIMEZONE, ELE_LOC)
         # 执行删除操作
         DialogPage(self.driver).is_delete_or_cancel(module_val="timezone")
Example #6
0
 def verify_pedestrians_not_null(self):
     """ 点击添加任务,点击确认,进行人体区域入侵的非空校验"""
     # 点击左侧菜单
     self.click_left_menu("人体-区域闯入检测任务")
     # 点击添加任务
     self.click_add_task_btn()
     DialogPage(self.driver).is_confirm_or_cancel(loc_by_til="添加任务")
Example #7
0
 def verify_parked_vehicle_not_null(self):
     """ 点击添加任务,点击确认,进行车辆违停的非空校验"""
     # 点击左侧菜单
     self.click_left_menu("车辆-违停检测任务")
     # 点击添加任务
     self.click_add_task_btn()
     DialogPage(self.driver).is_confirm_or_cancel(loc_by_til="添加任务")
    def operations_table_list(self, name, flag):
        """ 定位列表项的相关操作,有:查看、编辑、删除 """
        # 定位查看icon
        VIEW_ICON = (
            By.XPATH,
            f'//table[@class="el-table__body"]//div[@class="cell" and  text() = "{name}"]/parent::td/following-sibling::td[contains(@class, "tables-operate")]//i[contains(@class, "icon-view")]'
        )
        # 定位编辑icon
        EDIT_ICON = (
            By.XPATH,
            f'//table[@class="el-table__body"]//div[@class="cell" and  text() = "{name}"]/parent::td/following-sibling::td[contains(@class, "tables-operate")]//i[contains(@class, "icon-edit")]'
        )
        # 定位删除icon
        DELETE_ICON = (
            By.XPATH,
            f'//table[@class="el-table__body"]//div[@class="cell" and  text() = "{name}"]/parent::td/following-sibling::td[contains(@class, "tables-operate")]//i[contains(@class, "icon-delete")]'
        )

        # 点击查看、 编辑、删除icon
        if flag == "view":
            BasePage(self.driver).click_ele(VIEW_ICON)
        elif flag == "edit":
            BasePage(self.driver).click_ele(EDIT_ICON)
        elif flag == "delete":
            BasePage(self.driver).click_ele(DELETE_ICON)
            # 进行弹框删除操作
            DialogPage(self.driver).operation_dialog_btn(btn_text="删除")
Example #9
0
    def task_batch_operation(self, flag, text="确定"):
        # 点击批量操作按钮
        self.click_batch_operation_btn()
        # 全选操作
        self.check_all()
        if flag == "disabled":
            # 点击批量禁用按钮
            self.crumbs_btn_opreration(btn_text="批量禁用")
        elif flag == "start":
            # 点击批量启用按钮
            self.crumbs_btn_opreration(btn_text="批量启用")
        elif flag == "delete":
            # 点击批量删除按钮
            # self.crumbs_btn_opreration(btn_text="批量删除")
            """ 针对批量删除操作 """
            try:
                # BTN = (By.XPATH,
                #        '//div[@class="el-table__header-wrapper"]//div[text()="任务名称"]/parent::th/preceding-sibling::th//span[contains(@class, "el-checkbox__input") and contains(@class, "is-disabled")]')
                # WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(BTN))
                # 获取当前表格中的任务列表是否为空
                LIST_TAB = (
                    By.XPATH,
                    '//div[contains(@class, "el-table__body-wrapper")]//tbody//tr'
                )
                # 如果全选按钮处于不可点击状态,则说明当前页面的列表为空
                WebDriverWait(self.driver, 10).until(
                    EC.presence_of_element_located(LIST_TAB))
            except:
                # 删除
                print("当前任务列表为空,不能进行批量删除操作!")
            else:
                # 如果能定位到任务列表,则进行任务列表的批量删除操作
                self.crumbs_btn_opreration(btn_text="批量删除")

        if text == "确定":
            # dialog窗口 - 确定状态的修改
            DialogPage(self.driver).operation_dialog_btn()
        elif text == "取消":
            # dialog窗口 - 取消状态的修改
            DialogPage(self.driver).operation_dialog_btn(btn_text="取消")
        elif text == "删除":
            # dialog窗口 - 批量删除
            DialogPage(self.driver).operation_dialog_btn(btn_text="删除")
 def table_list_switch(self, name):
     """  table_list 列表状态开关,如任务的启用/禁用 """
     # 定位开关操作
     SWITCH_BTN = (
         By.XPATH,
         f'//div[@class="cell" and text()="{name}"]/parent::td/following-sibling::td//div[contains(@class, "el-switch")]'
     )
     BasePage(self.driver).click_ele(SWITCH_BTN)
     # 在弹框中确定点击按钮 - 修改状态
     DialogPage(self.driver).operation_dialog_btn()
Example #11
0
 def delete_or_rename_holidays_or_workday(self, name, flag="删除"):
     """ 删除假期或特殊工作日 """
     # 定位到当前假期或特殊工作日
     SELECT_TIMEZONE = (By.XPATH, f'//span[text()="{name}"]/ancestor::tr')
     BasePage(self.driver).mouse_move_ele(SELECT_TIMEZONE)
     if flag == "重命名":
         # TODO
         ELE_LOC = (
             By.XPATH,
             '//div[@class="timezone-left-popper"]//span[contains(text(), "重命名")]'
         )
     elif flag == "删除":
         # 定位到 "删除" 元素
         ELE_LOC = (
             By.XPATH,
             '//div[@class="timezone-left-popper"]//span[contains(text(), "删除")]'
         )
         BasePage(self.driver).mouse_move_ele_and_click(
             SELECT_TIMEZONE, ELE_LOC)
         # 执行删除操作
         DialogPage(self.driver).is_delete_or_cancel(module_val="timezone")
def close_dialog(login):
    # 关闭dialog
    yield
    DialogPage(login).close_dialog()
def task_no_setup(login):
    MenuBarPage(login).click_nav_item("配置", "任务管理")
    yield login
    DialogPage(login).close_dialog()