我需要做一些宏,我想知道什么是最推荐的方法来做到这一点。所以,我需要写一些东西,并点击一些地方与它,我需要模仿TAB键。
af7jpaap1#
我用Python做自动化测试。我倾向于使用以下内容:http://www.tizmoi.net/watsup/intro.html
**编辑:**链接失效,存档版本:https://web.archive.org/web/20100224025508/http://www.tizmoi.net/watsup/intro.html
http://www.mayukhbose.com/python/IEC/index.php我并不总是(几乎从来没有)模拟按键和鼠标移动。我通常使用COM来设置Windows对象的值并调用它们的.click()方法。您可以使用以下命令发送按键信号:
import win32com.client shell = win32com.client.Dispatch("WScript.Shell") shell.SendKeys("^a") # CTRL+A may "select all" depending on which window's focused shell.SendKeys("{DELETE}") # Delete selected text? Depends on context. :P shell.SendKeys("{TAB}") #Press tab... to change focus or whatever
这一切都在Windows中。如果你在另一个环境中,我就不知道了。
gt0wga4j2#
您正在寻找Sendkeys吗?SendKeys是Windows的Python模块,可以向活动窗口发送一个或多个击键或击键组合。似乎只有windows你也有pywinauto(从我的SO答案复制)pywinauto是一组开源(LGPL)模块,用于将Python用作基于Windows NT的操作系统(NT/W2 K/XP)的GUI自动化“驱动程序”。和网页上的例子
> from pywinauto import application > app = application.Application.start("notepad.exe") > app.notepad.TypeKeys("%FX") > app.Notepad.MenuSelect("File->SaveAs") > app.SaveAs.ComboBox5.Select("UTF-8") > app.SaveAs.edit1.SetText("Example-utf8.txt") > app.SaveAs.Save.Click()
x8diyxa73#
pyautogui是一个很棒的软件包,可以发送键并自动执行一些与键盘/鼠标相关的任务。查看Controlling the Keyboard and Mouse with GUI Automation和PyAutoGUI’s documentation。
utugiqy64#
您可以使用PyAutoGUI library for Python,它可以在Windows,macOS和Linux上运行。
下面是一个简单的代码,将鼠标移动到屏幕中间:
import pyautogui screenWidth, screenHeight = pyautogui.size() pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
文档页面:Mouse Control Functions。相关问题:Controlling mouse with Python。
示例:
pyautogui.typewrite('Hello world!') # prints out "Hello world!" instantly pyautogui.typewrite('Hello world!', interval=0.25) # prints out "Hello world!" with a quarter second delay after each character
文档页面:Keyboard Control Functions。更多阅读:Controlling the Keyboard and Mouse with GUI Automation(电子书第18章)。相关问题:
wlp8pajw5#
其他两个选项是:
警告-如果你想使用键盘控制游戏,那么pynput并不总是工作-例如。它适用于Valheim,但不适用于Witcher 3 -这是PyDirectInput将工作的地方。我还测试了PyDirectInput,它适用于半条命2(作为一个老游戏的测试)。提示-您可能需要减少(不要删除游戏)字符输入之间的延迟-使用pydirectinput.PAUSE = 0.05举个例子,这里有一个允许虚拟键盘输入的函数-目前只在Windows上测试:
from pynput import keyboard try: import pydirectinput pydirectinput.PAUSE = 0.05 except ImportError as err: pydirectinput = False print("pydirectinput not found:") def write_char(ch): upper = ch.isupper() if pydirectinput and pydirectinput.KEYBOARD_MAPPING.get(ch.lower(), False): if upper: pydirectinput.keyDown('shift') print('^') pydirectinput.write(ch.lower(), interval=0.0) print(ch) if upper: pydirectinput.keyUp('shift') else: keyboard.Controller().type(ch)
这允许发送一个字符串,通过pydirectinput处理大写字母字符。当字符不能简单地Map时,该函数福尔斯到使用pynput。请注意,PyAutoGUI也不能处理一些移位字符--例如£符号等。
bpsygsoo6#
ctypes!这里没有提到的一个答案是ctypes,它的主要优点是它是一个可以立即使用的本地库。我个人对它的问题也比其他图书馆少。
ctypes
import ctypes ctypes.windll.user32.keybd_event(0x73, 0, 0, 0) # F4 Down ctypes.windll.user32.keybd_event(0x73, 0, 0x0002, 0) # F4 Up ctypes.windll.user32.mouse_event(2, 0, 0, 0, 0) #Left mouse button down ctypes.windll.user32.mouse_event(4, 0, 0, 0, 0) #Left mouse button up ctypes.windll.user32.SetCursorPos(100, 100)
鼠标控制是不言自明的,和keycodes on Windows are documented here。
6条答案
按热度按时间af7jpaap1#
我用Python做自动化测试。我倾向于使用以下内容:
http://www.tizmoi.net/watsup/intro.html
**编辑:**链接失效,存档版本:https://web.archive.org/web/20100224025508/http://www.tizmoi.net/watsup/intro.html
http://www.mayukhbose.com/python/IEC/index.php
我并不总是(几乎从来没有)模拟按键和鼠标移动。我通常使用COM来设置Windows对象的值并调用它们的.click()方法。
您可以使用以下命令发送按键信号:
这一切都在Windows中。如果你在另一个环境中,我就不知道了。
gt0wga4j2#
您正在寻找Sendkeys吗?
SendKeys是Windows的Python模块,可以向活动窗口发送一个或多个击键或击键组合。
似乎只有windows
你也有pywinauto(从我的SO答案复制)
pywinauto是一组开源(LGPL)模块,用于将Python用作基于Windows NT的操作系统(NT/W2 K/XP)的GUI自动化“驱动程序”。
和网页上的例子
x8diyxa73#
pyautogui是一个很棒的软件包,可以发送键并自动执行一些与键盘/鼠标相关的任务。查看Controlling the Keyboard and Mouse with GUI Automation和PyAutoGUI’s documentation。
utugiqy64#
您可以使用PyAutoGUI library for Python,它可以在Windows,macOS和Linux上运行。
鼠标
下面是一个简单的代码,将鼠标移动到屏幕中间:
文档页面:Mouse Control Functions。
相关问题:Controlling mouse with Python。
键盘
示例:
文档页面:Keyboard Control Functions。
更多阅读:Controlling the Keyboard and Mouse with GUI Automation(电子书第18章)。
相关问题:
wlp8pajw5#
其他两个选项是:
警告-如果你想使用键盘控制游戏,那么pynput并不总是工作-例如。它适用于Valheim,但不适用于Witcher 3 -这是PyDirectInput将工作的地方。我还测试了PyDirectInput,它适用于半条命2(作为一个老游戏的测试)。
提示-您可能需要减少(不要删除游戏)字符输入之间的延迟-使用pydirectinput.PAUSE = 0.05
举个例子,这里有一个允许虚拟键盘输入的函数-目前只在Windows上测试:
这允许发送一个字符串,通过pydirectinput处理大写字母字符。当字符不能简单地Map时,该函数福尔斯到使用pynput。请注意,PyAutoGUI也不能处理一些移位字符--例如£符号等。
bpsygsoo6#
ctypes
!这里没有提到的一个答案是
ctypes
,它的主要优点是它是一个可以立即使用的本地库。我个人对它的问题也比其他图书馆少。鼠标控制是不言自明的,和keycodes on Windows are documented here。