【发布时间】:2017-11-19 19:50:33
【问题描述】:
我正在尝试实现一些非常简单的事情 - 使用我想要的脚本:
- 启动软件
- 填写用户名
- 按标签
- 填写密码
- 按回车
我无法执行第 3 步和第 5 步。这是我的代码:
import win32api
import win32gui
import win32con
def send_keys(hwnd, username, password):
for c in username:
win32api.PostMessage(hwnd, win32con.WM_CHAR, ord(c), 0)
win32api.keybd_event(win32con.VK_TAB, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0) # DOES NOT WORK
for c in password:
win32api.PostMessage(hwnd, win32con.WM_CHAR, ord(c), 0)
win32api.keybd_event(win32con.VK_RETURN, 0, win32con.KEYEVENTF_EXTENDEDKEY, 0) # DOES NOT WORK
def main():
[...] # Run software, it pops as foreground window
hwnd = win32gui.GetForegroundWindow()
send_keys(hwnd, 'some_username', 'some_password')
if __name__ == '__main__':
main()
当我在记事本中运行脚本的按键部分 (send_keys) 时,它会正确发送选项卡和返回/输入键,但是它不适用于预期的软件。有什么建议么?
【问题讨论】:
-
一次
tab按键是否足以让您的密码输入成为焦点? -
为什么每个人和他们的狗都痴迷于 UI 自动化应该通过伪造输入来完成的想法?当您需要自动化 UI 时,为什么不使用 UI 自动化?
标签: python winapi pywin32 win32gui