Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
A
auto-test
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
黄承天
auto-test
Commits
76d23059
提交
76d23059
authored
3月 30, 2020
作者:
黄承天
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修正布局错误的判断
上级
d41f36ea
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
36 行增加
和
12 行删除
+36
-12
SeleniumExecutor.java
...java/com/zjty/autotest/service/impl/SeleniumExecutor.java
+36
-12
没有找到文件。
src/main/java/com/zjty/autotest/service/impl/SeleniumExecutor.java
浏览文件 @
76d23059
...
@@ -197,7 +197,9 @@ public class SeleniumExecutor {
...
@@ -197,7 +197,9 @@ public class SeleniumExecutor {
Map
<
Attributes
,
WebElement
>
reload
=
reload
();
Map
<
Attributes
,
WebElement
>
reload
=
reload
();
traversal
(
reload
,
elementDetails
);
traversal
(
reload
,
elementDetails
);
}
}
elementDetails
.
add
(
elementDetail
);
if
(
nonNull
(
elementDetail
))
{
elementDetails
.
add
(
elementDetail
);
}
}
}
}
}
}
}
...
@@ -205,9 +207,22 @@ public class SeleniumExecutor {
...
@@ -205,9 +207,22 @@ public class SeleniumExecutor {
private
ElementDetail
act
(
Attributes
attributes
,
WebElement
element
,
String
actType
)
{
private
ElementDetail
act
(
Attributes
attributes
,
WebElement
element
,
String
actType
)
{
String
type
=
String
.
format
(
"<%s>%s"
,
element
.
getTagName
(),
element
.
getText
());
String
type
=
String
.
format
(
"<%s>%s"
,
element
.
getTagName
(),
element
.
getText
());
String
message
=
null
;
String
message
=
null
;
long
responseTime
=
0
L
;
long
responseTime
=
-
1
L
;
boolean
success
=
false
;
boolean
success
=
false
;
try
{
try
{
Boolean
locationMatch
=
checkLocation
(
element
);
if
(!
locationMatch
)
{
message
=
"布局错误"
;
log
.
error
(
"error:布局错误"
);
historyAttributes
.
add
(
attributes
);
currentHistoryAttributes
.
add
(
attributes
);
return
new
ElementDetail
(
type
,
(
int
)
responseTime
,
false
,
message
);
}
if
(
isEnabled
(
element
))
{
if
(
isEnabled
(
element
))
{
long
startTime
=
System
.
currentTimeMillis
();
long
startTime
=
System
.
currentTimeMillis
();
if
(
Objects
.
equals
(
actType
,
INPUT
))
{
if
(
Objects
.
equals
(
actType
,
INPUT
))
{
...
@@ -225,29 +240,25 @@ public class SeleniumExecutor {
...
@@ -225,29 +240,25 @@ public class SeleniumExecutor {
}
}
long
endTime
=
System
.
currentTimeMillis
();
long
endTime
=
System
.
currentTimeMillis
();
responseTime
=
endTime
-
startTime
;
responseTime
=
endTime
-
startTime
;
Alert
alert
=
ExpectedConditions
.
alertIsPresent
().
apply
(
driver
);
Alert
alert
=
ExpectedConditions
.
alertIsPresent
().
apply
(
driver
);
String
jsMsg
=
checkJsError
();
if
(
nonNull
(
alert
))
{
if
(
nonNull
(
alert
))
{
message
=
"出现警告窗:"
+
alert
.
getText
();
message
=
"
error:
出现警告窗:"
+
alert
.
getText
();
alert
.
accept
();
alert
.
accept
();
success
=
false
;
success
=
false
;
}
}
else
if
(
nonNull
(
jsMsg
))
{
String
jsMsg
=
checkJsError
();
if
(
nonNull
(
jsMsg
))
{
message
=
jsMsg
;
message
=
jsMsg
;
success
=
false
;
success
=
false
;
log
.
error
(
"error:出现js异常:{}"
,
jsMsg
);
log
.
error
(
"error:出现js异常:{}"
,
jsMsg
);
}
}
}
}
}
catch
(
ElementNotInteractableException
e
)
{
}
catch
(
ElementNotInteractableException
e
)
{
message
=
"布局错误"
;
log
.
error
(
"error:可操作范围之外的元素"
);
success
=
false
;
return
null
;
log
.
error
(
"error:存在可操作范围之外的元素"
);
}
catch
(
TimeoutException
e
)
{
}
catch
(
TimeoutException
e
)
{
message
=
"页面超时"
;
message
=
"页面超时"
;
success
=
false
;
success
=
false
;
log
.
error
(
"error:
存在可操作范围之外的元素
"
);
log
.
error
(
"error:
页面超时
"
);
}
catch
(
NoSuchElementException
e
)
{
}
catch
(
NoSuchElementException
e
)
{
message
=
"依赖缺失"
;
message
=
"依赖缺失"
;
success
=
false
;
success
=
false
;
...
@@ -435,6 +446,19 @@ public class SeleniumExecutor {
...
@@ -435,6 +446,19 @@ public class SeleniumExecutor {
return
result
;
return
result
;
}
}
private
Boolean
checkLocation
(
WebElement
element
)
{
try
{
Dimension
size
=
driver
.
manage
().
window
().
getSize
();
Point
elementLocation
=
element
.
getLocation
();
Dimension
elementSize
=
element
.
getSize
();
boolean
xMatch
=
(
elementLocation
.
x
)
>=
0
&&
(
elementLocation
.
x
+
elementSize
.
width
<=
size
.
width
);
boolean
yMatch
=
(
elementLocation
.
y
)
>=
0
&&
(
elementLocation
.
y
+
elementSize
.
width
<=
size
.
height
);
return
xMatch
&&
yMatch
;
}
catch
(
Exception
e
)
{
return
false
;
}
}
@SuppressWarnings
(
"OptionalGetWithoutIsPresent"
)
@SuppressWarnings
(
"OptionalGetWithoutIsPresent"
)
private
String
checkJsError
()
{
private
String
checkJsError
()
{
try
{
try
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论