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)

  • 相关阅读:
    new in swift
    Mac Git [remote rejected] master -> master (pre-receive hook declined) 解决方案
    Mac git 代码的Add 以及提交
    swift storyboard 跳转的2 种方式
    iOS 常用指令(svn cocoa pod)
    java面试题(晨星)
    谈Spring的理解
    软件产品开发文档大纲
    商城项目要点
    金蝶面试小记
  • 原文地址:https://www.cnblogs.com/wangjunjiehome/p/14108118.html
Copyright © 2011-2022 走看看