元素抓取工具有待进一步加强

哒哒 2019-3-22 2069

元素的识别还是不够精确,用元素抓取工具来看下面这四个元素,差别仅仅是"aaname"的不同。


_元素抓取工具有待进一步加强

{"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":{"url":"http://172.32.244.101/index","title":"中远海运· 新内贸","tagName":"LABEL","attrMap":{"tag":"LABEL","parentid":"divRteInfo","aaname":"潍坊[WEF01]"},"index":0}}
{"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":{"url":"http://172.32.244.101/index","title":"中远海运· 新内贸","tagName":"LABEL","attrMap":{"tag":"LABEL","parentid":"divRteInfo","aaname":"新港[TSN05]"},"index":0}}
{"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":{"url":"http://172.32.244.101/index","title":"中远海运· 新内贸","tagName":"LABEL","attrMap":{"tag":"LABEL","parentid":"divRteInfo","aaname":"新港[TSN01]"},"index":0}}
{"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":{"url":"http://172.32.244.101/index","title":"中远海运· 新内贸","tagName":"LABEL","attrMap":{"tag":"LABEL","parentid":"divRteInfo","aaname":"南通[NTG04]"},"index":0}}


要想只抓第二个“新港”那个框的文本内容,没法不通过"aaname"用元素抓取来定位第二个元素,但是用"aaname"就没意义了,成了判断那个元素在不在,而不是抓这个元素的文本。_元素抓取工具有待进一步加强


另外,对于勾选元素的识别定位也是不行

_元素抓取工具有待进一步加强

最新回复 (7)
  • 哒哒 2019-3-22
    2
    根据群内大佬的指点,这种问题都要通过JS来解决。。。。看来BOT的教程中,于JS相关的联动操作是重中之重。
  • luo 2019-3-24
    3

    帮你解决的时候并没有用到JS,通过通配符与index即解决你的问题

  • 哒哒 2019-3-26
    4

    根据LUO大佬的解答,现根据学习情况总结如下:
    第一个情况:
    首先,在"aaname"后面的"南通[NTG04]"是由2个元素组成,分别为“南通”和“NTG04”因此不能简单的用"aaname":"*"来模糊性指定,而应当写为"aaname":"*[*]"。
    其次,LUO大佬说“index带表位置”。我的理解是在源代码的相关区域中不同的元素所处的序列位置代码(代码为从0开始的数组),比如我想取"新港[TSN01]"这个文本,其目标就应当为:
    {"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":{"url":"http://172.32.244.101/index","title":"中远海运· 新内贸","tagName":"LABEL","attrMap":{"tag":"LABEL","parentid":"divRteInfo","aaname":"*[*]"},"index":2}}

  • 哒哒 2019-3-26
    5
    第二个情况:
    首先,根据LUO大佬的查看,此勾选框为“伪勾选框”。单纯以那个“小方块”勾选框为元素目标无法正确定位到并进行勾选。所以首先要选对正确的元素。经观察,这个勾选框既可以点方框勾选,也可以点文字勾选,所以选择元素的时候应该选那个能把文字也包含进去的元素目标。请注意,在这里需要在浏览器后台查看元素在勾选状态和非勾选状态下的属性状态并记录其状态指令,在使用 获取元素属性 命令的时候,要注意在属性名那里填入"class"获取属性(至于为啥是class我还没弄明白),并且调整index序列排查出正确的序号。在找到与当前状态相符的序号的时候就可以确定目标了,然后可以通过更改目标属性,进行勾选和去除勾选状态。
    不过目前发现一个新的问题。。目标的确是勾选了,但是与之相关的另一个联动并没有激发。。。这个。。。只能先用这个元素目标当作鼠标动作目标进行定位解决了。。。
  • 哒哒 2019-3-26
    6
    另外,补充昨天刚刚学习的一个情况:
    有时候需要定位的元素既不能通过index进行定位,也不能通过"aaname"或者“id”进行定位的时候可以先通过定位查找其父元素,并通过父元素进行定位查找子元素定位。
    但是同样目前遇到了找不到“亲爹”的情况。。。。啊西巴。学无止境,道路坎坷。。又遇上LUO大神出差,他何时是归期啊。。。
  • 哒哒 2019-3-28
    7
    再次补充学习情况:
    我在用父元素找子元素的历程中遇到了“真假爹”和“真假儿子”的情况。“假爹”和“假儿子”会导致目标选取不准,选不到自己实际相要的元素。这种情况就要多用UiElement.GetChildren命令去抓子元素并挨个分析解读。特别是有多个儿子的爹,重点是找出带有index字样的儿子,并依次递增index的数值来定位元素。在找到疑似真儿子的情况下,也要通过元素抓取功能导出元素样本来进行比对,如果没有关键对应值,说明不是真儿子,还得继续抓。
  • 天雨 2019-5-21
    8
    aaname对应的是网页元素里的什么?title还是innertext?
返回
发新帖