Commit fc81126b authored by 齐 振鋆's avatar 齐 振鋆
Browse files

更新打开菜单方式,优化执行js公共方法

parent 7d37b589
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
# 作者:齐振鋆 # 作者:齐振鋆
# 日期:2022/9/23 # 日期:2022/9/23
import logging import logging
import allure
from unit.public.UI.BasePage import BasePage from unit.public.UI.BasePage import BasePage
...@@ -16,6 +15,8 @@ class MenuElement(BasePage): ...@@ -16,6 +15,8 @@ class MenuElement(BasePage):
second_menu = "//div[contains(@class, 'third-menu') and @navname='{}']/ancestor::div[@class='sec-menu']".format( second_menu = "//div[contains(@class, 'third-menu') and @navname='{}']/ancestor::div[@class='sec-menu']".format(
last_menu_name) last_menu_name)
third_menu = "//div[contains(@class, 'third-menu') and @navname='{}']".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(first_menu)
self.move_to_element(second_menu) # self.move_to_element(second_menu)
self.click(third_menu) if self.wait_element(third_menu) else self.click(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))
...@@ -3,10 +3,10 @@ ...@@ -3,10 +3,10 @@
# 日期:2023/2/14 # 日期:2023/2/14
# 描述: # 描述:
import logging import logging
import pytest
from time import sleep from time import sleep
import pytest
from page.GuKeYiTiHua.Public.errorMsg import ErrorMessage from page.GuKeYiTiHua.Public.errorMsg import ErrorMessage
from page.GuKeYiTiHua.Public.table import Table from page.GuKeYiTiHua.Public.table import Table
from unit.public.UI.BasePage import BasePage from unit.public.UI.BasePage import BasePage
...@@ -26,6 +26,7 @@ class OrderDetailMain(BasePage): ...@@ -26,6 +26,7 @@ class OrderDetailMain(BasePage):
self.click("//*[text()='{}']".format(tap_name)) self.click("//*[text()='{}']".format(tap_name))
def text_input_item(self, name, text, enter=False, get=False): def text_input_item(self, name, text, enter=False, get=False):
"""输入框元素"""
log.info('【{}】输入:{}'.format(name, text)) log.info('【{}】输入:{}'.format(name, text))
text_input = "//*[string()='{}']/following-sibling::div//input".format(name) text_input = "//*[string()='{}']/following-sibling::div//input".format(name)
if get is True: if get is True:
...@@ -36,6 +37,7 @@ class OrderDetailMain(BasePage): ...@@ -36,6 +37,7 @@ class OrderDetailMain(BasePage):
self.em.check_message() self.em.check_message()
def text_area_item(self, name, text): def text_area_item(self, name, text):
"""输入域元素"""
log.info('【{}】输入:{}'.format(name, text)) log.info('【{}】输入:{}'.format(name, text))
area = "//*[string()='{}']/following-sibling::div//textarea".format(name) area = "//*[string()='{}']/following-sibling::div//textarea".format(name)
self.type(area, text) self.type(area, text)
...@@ -46,18 +48,21 @@ class OrderDetailMain(BasePage): ...@@ -46,18 +48,21 @@ class OrderDetailMain(BasePage):
return element if get is True else self.click(element) return element if get is True else self.click(element)
def drop_choose_item(self, name, item): def drop_choose_item(self, name, item):
"""下拉元素"""
log.info('【{}】下拉选择:{}'.format(name, item)) log.info('【{}】下拉选择:{}'.format(name, item))
self.click("//*[string()='{}']/following-sibling::div//input".format(name)) self.click("//*[string()='{}']/following-sibling::div//input".format(name))
drop_item = "//div[@data-popper-placement='bottom-start' and @aria-hidden='false']//*[text()='{}']".format(item) drop_item = "//div[@data-popper-placement='bottom-start' and @aria-hidden='false']//*[text()='{}']".format(item)
self.click(drop_item) self.click(drop_item)
def date_input_item(self, name, date_str=None): def date_input_item(self, name, date_str=None):
"""日期元素"""
date_input = "//*[string()='{}']/following-sibling::div//input".format(name) 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 date_str = self.tu.get_date_str(1) if date_str is None else date_str
log.info('【{}】输入:{}'.format(name, date_str)) log.info('【{}】输入:{}'.format(name, date_str))
self.type(date_input, date_str) self.type(date_input, date_str)
def get_element_text(self, name, get=False): def get_element_text(self, name, get=False):
"""获取元素内文本"""
log.info('获取:【{}】'.format(name)) log.info('获取:【{}】'.format(name))
element = "//div[text()='{}']/following-sibling::div/span".format(name) element = "//div[text()='{}']/following-sibling::div/span".format(name)
if get is True: if get is True:
...@@ -77,6 +82,7 @@ class OrderDetailTable(BasePage): ...@@ -77,6 +82,7 @@ class OrderDetailTable(BasePage):
table = Table() table = Table()
def position_cell(self, column_name, row_tag): def position_cell(self, column_name, row_tag):
"""获取表单明细单元格Xpath"""
colid = self.table.get_col_id(column_name) colid = self.table.get_col_id(column_name)
# 定位表格 # 定位表格
th_xpath = "//span[text()='{}']/ancestor::th".format(column_name) th_xpath = "//span[text()='{}']/ancestor::th".format(column_name)
...@@ -87,6 +93,7 @@ class OrderDetailTable(BasePage): ...@@ -87,6 +93,7 @@ class OrderDetailTable(BasePage):
return "{}/td[@colid='{}']/div".format(tr_xpath, colid) return "{}/td[@colid='{}']/div".format(tr_xpath, colid)
def get_cell_text(self, column_name, row_tag): def get_cell_text(self, column_name, row_tag):
"""获取表单单元格内容"""
log.info('获取{}的{}'.format(row_tag, column_name)) log.info('获取{}的{}'.format(row_tag, column_name))
# 获取列id # 获取列id
cell = self.position_cell(column_name, row_tag) cell = self.position_cell(column_name, row_tag)
...@@ -94,6 +101,7 @@ class OrderDetailTable(BasePage): ...@@ -94,6 +101,7 @@ class OrderDetailTable(BasePage):
return self.get_ele_text(cell) return self.get_ele_text(cell)
def input_text(self, column_name, row_tag, text): def input_text(self, column_name, row_tag, text):
"""表单单元格输入框输入内容"""
log.info('【{}】的【{}】输入:【{}】'.format(row_tag, column_name, text)) log.info('【{}】的【{}】输入:【{}】'.format(row_tag, column_name, text))
# 定位单元格 # 定位单元格
td_xpath = self.position_cell(column_name, row_tag) td_xpath = self.position_cell(column_name, row_tag)
...@@ -110,6 +118,7 @@ class OrderDetailTable(BasePage): ...@@ -110,6 +118,7 @@ class OrderDetailTable(BasePage):
sleep(0.5) sleep(0.5)
def choose_item(self, column_name, row_tag, item): def choose_item(self, column_name, row_tag, item):
"""表单单元格下拉选择"""
log.info('【{}】的【{}】选择:【{}】'.format(row_tag, column_name, item)) log.info('【{}】的【{}】选择:【{}】'.format(row_tag, column_name, item))
# 定位单元格 # 定位单元格
td_xpath = self.position_cell(column_name, row_tag) td_xpath = self.position_cell(column_name, row_tag)
...@@ -128,6 +137,7 @@ class OrderDetailTable(BasePage): ...@@ -128,6 +137,7 @@ class OrderDetailTable(BasePage):
sleep(0.5) sleep(0.5)
def get_details(self, columns): def get_details(self, columns):
"""获取表单明细详情"""
columns = [columns] if type(columns) == str else columns if type(columns) == list else pytest.fail( columns = [columns] if type(columns) == str else columns if type(columns) == list else pytest.fail(
"获取单据明细详情参数类型错误") "获取单据明细详情参数类型错误")
detail_list = [] detail_list = []
...@@ -140,7 +150,8 @@ class OrderDetailTable(BasePage): ...@@ -140,7 +150,8 @@ class OrderDetailTable(BasePage):
for index in range(lines): for index in range(lines):
item = [] item = []
for col_id in col_list: 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)) log.info('{}:{}'.format('元素:', ele))
txt = self.get_ele_text(ele) txt = self.get_ele_text(ele)
log.info('{}:{}'.format('文本:', txt)) log.info('{}:{}'.format('文本:', txt))
......
...@@ -331,13 +331,15 @@ class BasePage(object): ...@@ -331,13 +331,15 @@ class BasePage(object):
element.click() element.click()
self.dd.get_value('driver').switch_to.window(self.dd.get_value('driver').window_handles[-1]) 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 执行JavaScript
:param script:js语句 :param script: js语句
:param xpath:
""" """
log.debug('执行JS语句:{}'.format(script)) 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 @staticmethod
def zoom(z_type, times): def zoom(z_type, times):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment