Skip to content
📔 阅读量:

相对坐标定位

背景

相对坐标定位方案是是一种基于 UI 的元素定位方案,是我们提供了一种使用简单,且效率极高、稳定性好的元素定位方案。

基于元素按钮在应用中的相对位置,动态获取元素在当前屏幕中的位置。

当元素按钮位置相对于应用界面位置发生修改之后,只需要根据 UI 设计图上的源数据修改对应坐标数据就好,维护非常的方便。

使用场景

此类元素定位方案适用于一些元素位置相对与应用界面比较固定的应用,比如:音乐(99% 的元素定位采用这种,效果非常好)。

不适用于界面不固定的应用,比如:截图录屏。

实现原理

在 UI 设计图中我们是可以获取到元素按钮相对于应用边框的距离的,然后我们可以获取到应用界面在当前屏幕中的位置及应用窗口的大小,示意图如下:

在 UI 设计稿上点击【播放所有】图标,然后移动鼠标就就可以看到上图的参考线及数据;

配置元素对象

python
from pylinuxauto import Ele, Ref

playall_btn = Ele(xy=(290, 80), ref=Ref.LEFT_TOP, appname="deepin-music", alias="播放全部")
  • xy 是该元素按钮的相对与参考系的 (x, y) 的距离;

  • ref 是配置该元素的参考系,Ref 是参考系的类对象:

    • Ref.LEFT_TOP 左上;

    • Ref.LEFT_BOTTOM 左下;

    • Ref.RIGHT_TOP 右上;

    • Ref.RIGHT_BOTTOM 右下;

    参考系的选取标准:拉动改变窗口大小时,元素按钮相对于参考系位置是不变的;

  • appname 应用的包名;

  • alias 可选,元素的别名;

本地调用方法

python
import pylinuxauto

pylinuxauto.find_element_by_ref(playall_btn).click()
pylinuxauto.find_element_by_ref(playall_btn).right_click()
pylinuxauto.find_element_by_ref(playall_btn).double_click()

远程调用方法

python
from pylinuxauto.remote import remote_pylinuxauto
from pylinuxauto import Ele, Ref

rpl = remote_pylinuxauto(
    user="uos",
    ip="10.8.11.171",
    password="1",
)

close_btn = Ele(
    xy=(25, 25), ref=Ref.RIGHT_TOP, appname="dde-file-manager", alias="关闭按钮"
).to_dict()

rpl.click_element_by_ref(close_btn)