zoukankan      html  css  js  c++  java
  • 解决python selenium Action模拟拖拽无效

    采用物理模式鼠标操作的解决方法

    1. 首先通过 pip install pypiwin32导入包
    2. 测试代码

    import win32api, win32con
          # 移动到某点坐标
        	  win32api.SetCursorPos((782, 355))
        	  time.sleep(0.5)
        	  win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 782, 355)
              time.sleep(0.5)
              win32api.mouse_event(win32con.MOUSEEVENTF_MOVE, 300, 0)
              time.sleep(1)
              win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0)

    3. 函数介绍

    mouse_event: 该函数综合鼠标击键和鼠标动作
    VOID mouse_event(
    DWORD dwFlags,
    DWORD dx,
    DWORD dy,
    DWORD dwData,
    DWORD dwExtraInfo
    );
    dwFlags : 下表中标志之一或它们的组合
    dx,dy: 根据MOUSEEVENTF_ABSOLUTE标志,指定x,y方向的绝对位置或相对位置 。如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点。

    鼠标动作:
    MOUSEEVENTF_MOVE: 表明发生移动。
    MOUSEEVENTF_LEFTDOWN: 表明接按下鼠标左键。
    MOUSEEVENTF_LEFTUP: 表明松开鼠标左键。
    MOUSEEVENTF_ABSOLUTE: 表明参数dX,dy含有规范化的绝对坐标。
    MOUSEEVENTF_RIGHTDOWN: 表明按下鼠标右键。
    MOUSEEVENTF_RIGHTUP: 表明松开鼠标右键。
    MOUSEEVENTF_MIDDLEDOWN: 表明按下鼠标中键。
    MOUSEEVENTF_MIDDLEUP: 表明松开鼠标中键。
    MOUSEEVENTF_WHEEL: 在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。移动的数量由dwData给出。

    4. mouse_event使用举例
    1) 使用绝对坐标
    mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500)
    2) 鼠标左键按下和松开两个事件的组合即一次单击
    mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0)

  • 相关阅读:
    bzoj1059: [ZJOI2007]矩阵游戏
    NEW
    bzoj2438: [中山市选2011]杀人游戏
    bzoj4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
    【高精度】模板 (C++)
    【BZOJ4025】二分图 LCT
    读入/输出模板
    一些 Markdown 语法
    题解 P3732 [HAOI2017]供给侧改革
    题解 CF1598A Computer Game
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/14108118.html
Copyright © 2011-2022 走看看