Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
test
autotest-airtest-web-sc-airtest
Commits
fc81126b
Commit
fc81126b
authored
Nov 14, 2023
by
齐 振鋆
Browse files
更新打开菜单方式,优化执行js公共方法
parent
7d37b589
Changes
3
Hide whitespace changes
Inline
Side-by-side
page/GuKeYiTiHua/Public/menu.py
View file @
fc81126b
...
@@ -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
))
page/GuKeYiTiHua/Public/orderDetailPage.py
View file @
fc81126b
...
@@ -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
))
...
...
unit/public/UI/BasePage.py
View file @
fc81126b
...
@@ -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
):
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment