Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
V
Vue-WebDriver
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
高源
Vue-WebDriver
Commits
dd60d902
Commit
dd60d902
authored
Nov 17, 2023
by
高源
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://git.kivii.org/gy/Vue-WebDriver
parents
67a54b02
91d1b6ad
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
75 additions
and
0 deletions
+75
-0
sdk-fix.js
src/sdk-fix.js
+75
-0
No files found.
src/sdk-fix.js
0 → 100644
View file @
dd60d902
/**
* 检测传入的XPath是否有表的存在,如果没有返回null
* @param {object[]} tags 元素集合{xpath=XPath,name=返回的属性名,title=标题信息,type=操作类型:文本,链接,元素路径(点击动作用),relativePath=相对路径(最终的)}
* @returns {any} 返回对象信息{}
*/
function
checkTableFromXpaths
(
tags
)
{
let
rtns
=
null
;
//先找到共同的根以及各路径在共同根下的相对路径
let
parent
=
getCommonParentXPath
(
tags
);
if
(
parent
==
null
||
parent
.
length
==
0
)
return
rtns
;
//如果找不到直接返回null
let
relativeXpaths
=
getRelativeXPaths
(
parent
,
absolutePaths
);
//根据相同的根找到绝对路径的相对路径
while
(
parent
.
length
>
0
)
{
if
(
verifyTable
(
parent
,
absolutePaths
))
break
;
//如果验证表结构成功,就可以退出了
parent
.
pop
();
//向上一级找
relativeXpaths
=
getRelativeXPaths
(
parent
,
absolutePaths
);
//重新获取相对路径
}
if
(
parent
.
length
===
0
)
return
rtns
;
//如果父对象都为空了,直接返回null
let
tableData
=
getTableData
(
parent
,
relativeXpaths
);
//根据验证后的信息来获取表
rtns
=
{
parent
:
parent
,
relativeXpaths
:
relativeXpaths
,
tableData
:
null
};
return
rtns
;
}
/**
* 返回多个元素XPath的共同父节点,返回数组以方便向上移动
* @param {string[]} absolutePaths Xpath绝对路径集合
* @returns {string[]} 返回string[]的共同的根的各部分的集合
*/
function
getCommonParentXPath
(
tags
)
{
let
rtns
=
null
;
if
(
!
tags
||
tags
.
length
===
0
)
return
rtns
;
let
allXpaths
=
tags
.
map
(
path
=>
tag
.
xpath
.
split
(
'/'
));
// 分割每个路径为组成部分
rtns
=
[];
// 查找公共前缀
for
(
let
i
=
0
;
i
<
allXpaths
[
0
].
length
;
i
++
)
{
if
(
allXpaths
.
every
(
path
=>
path
[
i
]
===
allXpaths
[
0
][
i
]))
{
// 检查所有路径是否有这个部分
rtns
.
push
(
allXpaths
[
0
][
i
]);
}
else
{
break
;}
//如果发现不同的,直接就可以退出了
}
return
rtns
;
}
/**
* 根据共同的父节点,获取各绝对路径的相对路径,这个方法分离开以便复用
* @param {string[]} parentXpath 父节点路径集合
* @param {string[]} absoluteXpaths 绝对路径集合
* @returns {string[]} 返回string[]的相对路径集合
*/
function
getRelativeXPaths
(
parentXpath
,
absoluteXpaths
)
{
let
rtns
=
[];
let
splitPaths
=
absolutePaths
.
map
(
path
=>
path
.
split
(
'/'
));
splitPaths
.
map
(
path
=>
rtns
.
push
(
path
.
slice
(
parentXpath
.
length
)));
return
rtns
;
}
/**
* 验证表结构是否正确
* @param {string[]} parentXPath 父节点路径集合
* @param {string[]} relativeXPaths 相对路径集合
* @returns {boolean} 返回true为表结构正确
*/
function
verifyTable
(
parentXPath
,
relativeXPaths
)
{
return
false
;
}
/**
* 根据路径信息获取表内的数据
* @param {string[]} parentXPath 父节点路径集合
* @param {string[]} relativeXPaths 相对路径集合
* @returns {any} 返回表内数据
*/
function
getTableData
(
parentXPath
,
relativeXPaths
)
{
let
rtns
=
null
;
return
rtns
;
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a 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