From fc81126bd3bcd3ac25cc41af2aa5f11eb4c1476b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BD=90=E6=8C=AF=E9=8B=86?= <15388511@qq.com> Date: Tue, 14 Nov 2023 10:45:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=93=E5=BC=80=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=96=B9=E5=BC=8F=EF=BC=8C=E4=BC=98=E5=8C=96=E6=89=A7?= =?UTF-8?q?=E8=A1=8Cjs=E5=85=AC=E5=85=B1=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- page/GuKeYiTiHua/Public/menu.py | 9 +++++---- page/GuKeYiTiHua/Public/orderDetailPage.py | 17 ++++++++++++++--- unit/public/UI/BasePage.py | 8 +++++--- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/page/GuKeYiTiHua/Public/menu.py b/page/GuKeYiTiHua/Public/menu.py index 43a6141..5a968d1 100644 --- a/page/GuKeYiTiHua/Public/menu.py +++ b/page/GuKeYiTiHua/Public/menu.py @@ -2,7 +2,6 @@ # 作者:齐振鋆 # 日期:2022/9/23 import logging -import allure from unit.public.UI.BasePage import BasePage @@ -16,6 +15,8 @@ class MenuElement(BasePage): second_menu = "//div[contains(@class, 'third-menu') and @navname='{}']/ancestor::div[@class='sec-menu']".format( last_menu_name) third_menu = "//div[contains(@class, 'third-menu') and @navname='{}']".format(last_menu_name) - self.move_to_element(first_menu) - self.move_to_element(second_menu) - self.click(third_menu) if self.wait_element(third_menu) else self.click(second_menu) + # self.move_to_element(first_menu) + # self.move_to_element(second_menu) + # self.click(third_menu) if self.wait_element(third_menu) else self.click(second_menu) + self.js("arguments[0].click();", self.get_element(third_menu)) if self.wait_element(third_menu) else self.js( + "arguments[0].click();", self.get_element(second_menu)) diff --git a/page/GuKeYiTiHua/Public/orderDetailPage.py b/page/GuKeYiTiHua/Public/orderDetailPage.py index 851e476..579417e 100644 --- a/page/GuKeYiTiHua/Public/orderDetailPage.py +++ b/page/GuKeYiTiHua/Public/orderDetailPage.py @@ -3,10 +3,10 @@ # 日期:2023/2/14 # 描述: import logging -import pytest - from time import sleep +import pytest + from page.GuKeYiTiHua.Public.errorMsg import ErrorMessage from page.GuKeYiTiHua.Public.table import Table from unit.public.UI.BasePage import BasePage @@ -26,6 +26,7 @@ class OrderDetailMain(BasePage): self.click("//*[text()='{}']".format(tap_name)) def text_input_item(self, name, text, enter=False, get=False): + """输入框元素""" log.info('【{}】输入:{}'.format(name, text)) text_input = "//*[string()='{}']/following-sibling::div//input".format(name) if get is True: @@ -36,6 +37,7 @@ class OrderDetailMain(BasePage): self.em.check_message() def text_area_item(self, name, text): + """输入域元素""" log.info('【{}】输入:{}'.format(name, text)) area = "//*[string()='{}']/following-sibling::div//textarea".format(name) self.type(area, text) @@ -46,18 +48,21 @@ class OrderDetailMain(BasePage): return element if get is True else self.click(element) def drop_choose_item(self, name, item): + """下拉元素""" log.info('【{}】下拉选择:{}'.format(name, item)) self.click("//*[string()='{}']/following-sibling::div//input".format(name)) drop_item = "//div[@data-popper-placement='bottom-start' and @aria-hidden='false']//*[text()='{}']".format(item) self.click(drop_item) def date_input_item(self, name, date_str=None): + """日期元素""" date_input = "//*[string()='{}']/following-sibling::div//input".format(name) date_str = self.tu.get_date_str(1) if date_str is None else date_str log.info('【{}】输入:{}'.format(name, date_str)) self.type(date_input, date_str) def get_element_text(self, name, get=False): + """获取元素内文本""" log.info('获取:【{}】'.format(name)) element = "//div[text()='{}']/following-sibling::div/span".format(name) if get is True: @@ -77,6 +82,7 @@ class OrderDetailTable(BasePage): table = Table() def position_cell(self, column_name, row_tag): + """获取表单明细单元格Xpath""" colid = self.table.get_col_id(column_name) # 定位表格 th_xpath = "//span[text()='{}']/ancestor::th".format(column_name) @@ -87,6 +93,7 @@ class OrderDetailTable(BasePage): return "{}/td[@colid='{}']/div".format(tr_xpath, colid) def get_cell_text(self, column_name, row_tag): + """获取表单单元格内容""" log.info('获取{}的{}'.format(row_tag, column_name)) # 获取列id cell = self.position_cell(column_name, row_tag) @@ -94,6 +101,7 @@ class OrderDetailTable(BasePage): return self.get_ele_text(cell) def input_text(self, column_name, row_tag, text): + """表单单元格输入框输入内容""" log.info('【{}】的【{}】输入:【{}】'.format(row_tag, column_name, text)) # 定位单元格 td_xpath = self.position_cell(column_name, row_tag) @@ -110,6 +118,7 @@ class OrderDetailTable(BasePage): sleep(0.5) def choose_item(self, column_name, row_tag, item): + """表单单元格下拉选择""" log.info('【{}】的【{}】选择:【{}】'.format(row_tag, column_name, item)) # 定位单元格 td_xpath = self.position_cell(column_name, row_tag) @@ -128,6 +137,7 @@ class OrderDetailTable(BasePage): sleep(0.5) def get_details(self, columns): + """获取表单明细详情""" columns = [columns] if type(columns) == str else columns if type(columns) == list else pytest.fail( "获取单据明细详情参数类型错误") detail_list = [] @@ -140,7 +150,8 @@ class OrderDetailTable(BasePage): for index in range(lines): item = [] for col_id in col_list: - ele = "(//td[@colid='{}' and contains(@class, 'col--left')])[{}]//*[contains(@class, 'label')]".format(col_id, index + 1) + ele = "(//td[@colid='{}' and contains(@class, 'col--left')])[{}]//*[contains(@class, 'label')]".format( + col_id, index + 1) log.info('{}:{}'.format('元素:', ele)) txt = self.get_ele_text(ele) log.info('{}:{}'.format('文本:', txt)) diff --git a/unit/public/UI/BasePage.py b/unit/public/UI/BasePage.py index 1d175fd..d870974 100644 --- a/unit/public/UI/BasePage.py +++ b/unit/public/UI/BasePage.py @@ -331,13 +331,15 @@ class BasePage(object): element.click() self.dd.get_value('driver').switch_to.window(self.dd.get_value('driver').window_handles[-1]) - def js(self, script): + def js(self, script, xpath=None): """ 执行JavaScript - :param script:js语句 + :param script: js语句 + :param xpath: """ log.debug('执行JS语句:{}'.format(script)) - self.dd.get_value('driver').execute_script(script) + self.dd.get_value('driver').execute_script(script) if xpath is None else self.dd.get_value( + 'driver').execute_script(script, xpath) @staticmethod def zoom(z_type, times): -- GitLab