Commit 91d1b6ad by 施晓雨

更新sdk-fix

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