PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-06-11 03:19:28  修改时间:2024-11-25 16:02:54  分类:03.数据采集/爬虫  编辑

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

一、浏览器目标“单元素”定位

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