对于好多小白来说,定位的方式就是点击【查找目标】,然后背后隐藏的知识和后期维护的痛无人知晓,做为一个自动化老兵第一件事就是搞明白软件的工作原理,命令的定位方式,参数的作用。
一、浏览器目标“单元素”定位

1)通过id定位:
{
"html": [
{
"tag": "INPUT",
"id": "kw"
}
]
}
tag是目标的tag标签名称,id是目标的ID id=‘kw'
2)通过aaname
{
"html": {
"tagName": "A",
"attrMap": {
"tag": "A",
"parentid": "3001",
"aaname": "全新的rpa Gartner 报告 对比所有主流rpa产品"
},
"index": 0
},
"wnd": [
{
"app": "chrome",
"cls": "Chrome_WidgetWin_1",
"title": "*"
},
{
"cls": "Chrome_RenderWidgetHostHWND",
"title": "Chrome Legacy Window"
}
]
}
如果用arrtMap定位,tag改为tagName。parentid父id,aaname是innerText也就是标签的内容。
3)通过css selector定位:
自动生成的为绝对路径
// 自动生成的
{
"html": {
"tagName": "a",
"attrMap": {
"css-selector": "body>div>div>div>div>div>div>h3>a"
},
"index": 1
},
"wnd": [
{
"app": "chrome",
"cls": "Chrome_WidgetWin_1",
"title": "*"
},
{
"cls": "Chrome_RenderWidgetHostHWND",
"title": "Chrome Legacy Window"
}
]
}
// 手动编写的
{
"html": {
"tagName": "a",
"attrMap": {
"css-selector": "div.JjRYyv > h3 > a"
},
"index": 1
},
"wnd": [
{
"app": "chrome",
"cls": "Chrome_WidgetWin_1",
"title": "*"
},
{
"cls": "Chrome_RenderWidgetHostHWND",
"title": "Chrome Legacy Window"
}
]
}
不同的就是attrmap (attribute Map),也就是属性地图,通过地图找目标,而且只能是唯一的一条路线,如果是多条路线必须用index选择第几条路线。



特别注意:
1、在新版的 UiBot v6.x 中,“选择器”的JSON结构有改动,如下所示:
{
"html": [
{
"css-selector": "body>div>main>div>article>section>section>section>div>form>fieldset>div>div>div>div>div>div>table>tbody>tr>td",
"tag": "TD",
"idx": 23
}
],
"wnd": [
{
"app": "chrome",
"cls": "Chrome_WidgetWin_1",
"title": "*"
},
{
"cls": "Chrome_RenderWidgetHostHWND",
"title": "Chrome Legacy Window"
}
]
}

2、遇到的一个“大坑”
通过网页插件分析器生成的代码 在 客户端中不能使用,即无效,最后对比代码,发现是 wnd节点 内容不一致导致的(改成跟客户端的一致,问题解决),html节点 内容没有问题:

参考:https://www.cnblogs.com/baihuitestsoftware/articles/14474523.html