Commit dd60d902 by 高源

Merge branch 'master' of http://git.kivii.org/gy/Vue-WebDriver

parents 67a54b02 91d1b6ad
/**
* 检测传入的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
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