uiautomator2 滑动

Python uiautomator2按住图标滑动 滑道最后不要放开等服务器返回坐标,然后在滑动到坐标位置

img

可以参考下
https://www.jb51.net/article/205942.htm

定位到滑块按钮,然后调用以下方法拖动滑块:

# 从sx,sy坐标拖拽至ex,ey坐标
d.drag(sx, sy, ex, ey)

这个应该都没有问题,就是要注意在这个过程中,需要获取服务返回的坐标数据,此时你可以在拖动滑块过程中去判断下是否获取到服务返回的坐标,有的话就滑动到指定位置,没有的话就继续滑动即可

拖拽图标示例代码:

import time
import uiautomator2 as u2

# 连接设备
d = u2.connect('your_device_serial_number')

# 获取图标
icon = d(resourceId='com.xxx.xxx:id/icon')

# 长按并滑动图标
icon_long_click = icon.long_click()

# 长按之后的操作不会阻塞主线程,因此需要睡眠一段时间,确保拖拽完成
time.sleep(2)

# 获取最终的位置坐标
end_pos = d.get_last_match()['visibleBounds']

# 修改坐标为中心位置坐标
end_pos['right'] = end_pos['left'] + (end_pos['right'] - end_pos['left']) / 2
end_pos['bottom'] = end_pos['top'] + (end_pos['bottom'] - end_pos['top']) / 2

# 滑动到修改后的坐标
icon.drag(end_pos['right'], end_pos['bottom'])

要在 Python 中使用 uiautomator2 按住图标并滑动,等待服务器返回坐标后再滑动到指定位置,可以使用以下代码示例:

python
Copy code
import uiautomator2 as u2
import time

连接设备

d = u2.connect('设备序列号')

找到图标元素

icon = d(resourceId="com.example.app:id/icon")

按住图标并滑动到指定位置

icon.long_click()
time.sleep(2) # 等待服务器返回坐标,时间根据实际情况调整
d.swipe(start_x, start_y, end_x, end_y, duration=0.5) # 替换为实际的起始坐标和结束坐标

释放图标

icon.drag_to(end_x, end_y, duration=0.5) # 滑动到坐标位置

其他操作...

在上述代码中,首先使用 u2.connect 方法连接到设备,将 '设备序列号' 替换为实际的设备序列号。然后通过 d 对象找到图标元素,使用 long_click 方法按住图标。接着等待一段时间,以等待服务器返回坐标,这个时间根据实际情况进行调整。最后使用 swipe 方法实现滑动操作,将 start_x、start_y、end_x、end_y 替换为实际的起始坐标和结束坐标。最后使用 drag_to 方法将图标滑动到坐标位置。你可以根据实际需求进行其他操作。

img

可以使用uiautomator2库中的 drag 方法来实现按住图标滑动的功能。具体实现步骤如下:

  1. 获取起始和结束点的坐标
    首先,需要获取图标的起始点和结束点的坐标。您可以使用 uiautomator2 库中的 bounds 属性来获取控件的坐标信息。例如,假设要滑动的图标的 resource-idcom.example.app:id/icon ,可以使用以下代码获取该图标的坐标信息:
    import uiautomator2 as u2
    d = u2.connect() # 连接设备
    icon = d(resourceId="com.example.app:id/icon") # 获取图标控件
    bounds = icon.bounds # 获取图标控件的坐标信息
    start_x, start_y = bounds[0], bounds[1] # 起始点坐标
    end_x, end_y = bounds[2], bounds[3] # 结束点坐标
  2. 按住图标并滑动
    接下来,可以使用 drag 方法按住图标并滑动。该方法的参数为起始点坐标和结束点坐标。例如,假设要按住图标并向下滑动,可以使用以下代码:
    d.drag(start_x, start_y, end_x, end_y)
  3. 等待服务器返回坐标
    如果需要等待服务器返回坐标后再滑动到该坐标位置,可以使用 wait 方法等待指定时间。例如,假设需要等待5秒钟,可以使用以下代码:
    import time
    time.sleep(5) # 等待5秒钟
  4. 滑动到坐标位置
    最后,可以使用 drag 方法将图标滑动到指定的坐标位置。例如,假设服务器返回的坐标位置为 (x, y) ,可以使用以下代码将图标滑动到该坐标位置:
    d.drag(end_x, end_y, x, y)
    综上所述,可以使用以上代码实现按住图标滑动并等待服务器返回坐标后滑动到指定位置的功能。