最近在写APP的UI自动化测试,就有碰到popwindow悬浮窗里面的元素定位不的问题,定位元素在图片中的像素位置,直接点击,顺利完成,直接上代码,希望帮助被这个问题困惑到的朋友
# 方法二:使用 adb 命令获取 DPI
result = subprocess.run(["adb", "shell", "wm", "density"], capture_output=True, text=True)
density_output = result.stdout.strip()
dpi = int(density_output.split()[-1])
print(f'设备 DPI: {dpi}')
# 定义像素到 dp 的转换函数
def px_to_dp(px, dpi):
return px / (dpi / 160)
# 定义 dp 到像素的转换函数
def dp_to_px(dp, dpi):
return dp * (dpi / 160)
# 给定的像素坐标
px_x = 1535
px_y = 1007
# 将像素坐标转换为 dp 坐标
dp_x = px_to_dp(px_x, dpi)
dp_y = px_to_dp(px_y, dpi)
print(f'元素的 dp 坐标: ({dp_x:.2f}, {dp_y:.2f})')
# 将 dp 坐标转换回像素坐标
px = dp_to_px(dp_x, dpi)
py = dp_to_px(dp_y, dpi)
print(f'元素的像素坐标: ({int(px)}, {int(py)})')
# 发送触摸事件
subprocess.run(["adb", "shell", "input", "tap", str(int(px)), str(int(py))])