pyautogui 配合 selenium 实现桌面坐标系定位元素坐标,模拟真实鼠标行为,获取到的控件坐标有偏差

问题:当我用webdriver获取到的元素坐标,加上偏移量,pyautogui来模拟鼠标操作元素,发现实际的元素坐标与获取到的元素坐标不一致,导致无法准确操作元素
原因:通过selenium node.location获取的坐标是相当于浏览器实际内容窗口的坐标系,而不是电脑的相对坐标,不能满足pyautogui 直接去自动化操作。这时可以通过浏览器js 获取菜单等实际边框大小计算出 实际的node.location零点位置相对于桌面坐标的坐标系,从而得出元素在桌面坐标系的位置

def get_node_position(driver, node):
    """
    获取元素相对于window窗口上的绝对坐标
    :param driver: 浏览器自动化对象
    :param node: 定位到的元素对象
    :return: 
    """
    window_rect = driver.get_window_rect()
    menu = driver.execute_script("return window.outerHeight - window.innerHeight")
    border = driver.execute_script("return window.outerWidth -  window.innerWidth")
    origin_y = window_rect['y'] + menu - (border / 2)
    origin_x = window_rect['x'] + (border / 2)
    return {"x":node.location['x']+origin_x,"y":node.location['y']+origin_y}
————————————————
版权声明:本文为CSDN博主「_JackSparrow」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42709514/article/details/132164115
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值