Commit 91d1b6ad by 施晓雨

更新sdk-fix

parent 902cef1d
/** /**
* 检测传入的XPath是否有表的存在,如果没有返回null * 检测传入的XPath是否有表的存在,如果没有返回null
* @param {string[]} absolutePaths Xpath绝对路径集合 * @param {object[]} tags 元素集合{xpath=XPath,name=返回的属性名,title=标题信息,type=操作类型:文本,链接,元素路径(点击动作用),relativePath=相对路径(最终的)}
* @returns {object} 返回对象信息 * @returns {any} 返回对象信息{}
*/ */
function checkTableFromXpaths(absolutePaths) { function checkTableFromXpaths(tags) {
let rtns = null; let rtns = null;
//先找到共同的根以及各路径在共同根下的相对路径 //先找到共同的根以及各路径在共同根下的相对路径
let parent = getCommonParentXPath(absolutePaths); let parent = getCommonParentXPath(tags);
if (parent == null || parent.length == 0) return rtns;//如果找不到直接返回null if (parent == null || parent.length == 0) return rtns;//如果找不到直接返回null
let relativeXpaths = getRelativeXPaths(parent, absolutePaths);//根据相同的根找到绝对路径的相对路径 let relativeXpaths = getRelativeXPaths(parent, absolutePaths);//根据相同的根找到绝对路径的相对路径
while (parent.length > 0) { while (parent.length > 0) {
...@@ -14,6 +14,8 @@ function checkTableFromXpaths(absolutePaths) { ...@@ -14,6 +14,8 @@ function checkTableFromXpaths(absolutePaths) {
parent.pop();//向上一级找 parent.pop();//向上一级找
relativeXpaths = getRelativeXPaths(parent, absolutePaths);//重新获取相对路径 relativeXpaths = getRelativeXPaths(parent, absolutePaths);//重新获取相对路径
} }
if (parent.length === 0) return rtns;//如果父对象都为空了,直接返回null
let tableData = getTableData(parent, relativeXpaths);//根据验证后的信息来获取表
rtns = { rtns = {
parent: parent, parent: parent,
relativeXpaths: relativeXpaths, relativeXpaths: relativeXpaths,
...@@ -26,17 +28,14 @@ function checkTableFromXpaths(absolutePaths) { ...@@ -26,17 +28,14 @@ function checkTableFromXpaths(absolutePaths) {
* @param {string[]} absolutePaths Xpath绝对路径集合 * @param {string[]} absolutePaths Xpath绝对路径集合
* @returns {string[]} 返回string[]的共同的根的各部分的集合 * @returns {string[]} 返回string[]的共同的根的各部分的集合
*/ */
function getCommonParentXPath(absolutePaths) { function getCommonParentXPath(tags) {
let rtns = null; let rtns = null;
if (!absolutePaths || absolutePaths.length === 0) { if (!tags || tags.length === 0) return rtns;
return rtns; let allXpaths = tags.map(path => tag.xpath.split('/'));// 分割每个路径为组成部分
}
let splitPaths = absolutePaths.map(path => path.split('/'));// 分割每个路径为组成部分
rtns = [];// 查找公共前缀 rtns = [];// 查找公共前缀
for (let i = 0; i < splitPaths[0].length; i++) { for (let i = 0; i < allXpaths[0].length; i++) {
let currentPart = splitPaths[0][i]; if (allXpaths.every(path => path[i] === allXpaths[0][i])) { // 检查所有路径是否有这个部分
if (splitPaths.every(path => path[i] === currentPart)) { // 检查所有路径是否有这个部分 rtns.push(allXpaths[0][i]);
rtns.push(currentPart);
} else {break;}//如果发现不同的,直接就可以退出了 } else {break;}//如果发现不同的,直接就可以退出了
} }
return rtns; return rtns;
......
Markdown is supported
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