模拟windows键盘、鼠标等操作模块:pywin32

以下操作可以模拟对鼠标键盘的一系列顺序操作。

1、 将内容复制到剪切板:

# 将字符串text复制到剪切板
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('text')
win32clipboard.CloseClipboard()

2、 鼠标定位当前页面位置

win32api.SetCursorPos([200,370])  #数值[水平位置,垂直位置]

3、 鼠标单击和右击

#执行左单键击,若需要双击则延时几毫秒再点击一次即可
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
#右键单击
win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)

4、 键盘点击操作

# Ctrl+s (Ctrl+a、Ctrl+v操作类似)
win32api.keybd_event(17, 0, 0, 0) # 按下Ctrl键
win32api.keybd_event(83, 0, 0, 0) # 按下s键
win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放Ctrl键
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
# 按下回车并释放回车键
win32api.keybd_event(13, 0, 0, 0)
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)

【下面为键盘键值表:】
模拟windows键盘、鼠标等操作模块:pywin32_第1张图片

5、使用示例

基于pywin32,模仿鼠标键盘操作,可以实现完整网页的另存为操作(包括html以及图片链接等,效果与手动保存网页效果相同),示例如下:

def saveWeb_main2(url="https://www.baidu.com"):
    driver = webdriver.Firefox()
    driver.get(url)
    driver.maximize_window()
    time.sleep(2)
    title = driver.title
    # 设置路径为:当前项目的绝对路径+文件名
    # path = (os.path.dirname(os.path.realpath(__file__)) + "\\" + title + ".html")
    # 定位到指定网页元素,鼠标右击操作,context_click()
    # context = driver.find_element_by_css_selector(".index-logo-src")
    # ActionChains(driver).context_click(context).perform()
    # time.sleep(3)
    
    # 将路径复制到剪切板
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(title)
    win32clipboard.CloseClipboard()

    # #1、鼠标定位到(30,50)
    # win32api.SetCursorPos([200,150])
    # #执行左单键击,若需要双击则延时几毫秒再点击一次即可
    # # win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    # #右键单击
    # win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)

    # #2、按下下键,选择“网页另存为”
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)
    # win32api.keybd_event(40, 0, 0, 0)
    # time.sleep(1)

    # #3、 按下回车
    # win32api.keybd_event(13, 0, 0, 0)
    # time.sleep(1)
    # #4、 释放回车键
    # win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    # time.sleep(1)
    # #5、 释放下键
    # win32api.keybd_event(40, 0, win32con.KEYEVENTF_KEYUP, 0)
    # time.sleep(1)

    # Ctrl+s 可以替换上述1-5步
    win32api.keybd_event(17, 0, 0, 0)
    win32api.keybd_event(83, 0, 0, 0)
    win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    #鼠标定位输入框并点击
    win32api.SetCursorPos([200,370])  # 输入框的定位可能不同的尺寸会有不同定位位置,可以自己多次尝试
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    # win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP | win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0)
    time.sleep(1)

    # 按下ctrl+a
    win32api.keybd_event(17, 0, 0, 0)
    win32api.keybd_event(65, 0, 0, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(65, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    # 按下ctrl+v
    win32api.keybd_event(17, 0, 0, 0)
    win32api.keybd_event(86, 0, 0, 0)
    win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0)
    win32api.keybd_event(86, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(1)

    # 按下回车
    win32api.keybd_event(13, 0, 0, 0)
    win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0)
    time.sleep(10) #需要设置时间长一些,否则时间过短,页面下载不完整

    driver.quit()

你可能感兴趣的:(Python爬虫,selenium,windows操作,selenium,window,python)