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