PYAUTOGUI.热键

问题描述 投票:0回答:2

我知道创建和操作工作簿/粘贴的最有用的工具是 Pandas 或 Openpyxl。

我的问题是 TOTVS:我在其程序中找到一个表,我需要复制到数据库。

我尝试仅使用

pyautogui.hotkey('ctrl','shift','down')
浏览整个专栏。但是,它不是选择整个列,而是直接选择到最后。没有选择。

python pyautogui
2个回答
1
投票

我注意到我这边也有类似的问题。

在我看来,PyAutoGUI 在模拟按下两个以上非字母数字按钮作为热键时可能存在一些问题。

让我澄清一下我的经历:

我的设置:

  • Windows 10
  • VS 代码(最新)
  • Chrome(最新)
  • Python(3.10)
  • PyAutoGUI(最新)

我尝试使用热键 CTRL + SHIFT + DEL 组合自动清除 Chrome 缓存/cookie:

import pyautogui, time

pyautogui.click(256,1056) # Chrome icon click
time.sleep(2)
pyautogui.click(952,606) # click on Chrome empty page
pyautogui.hotkey('ctrl', 'shift', 'delete')

结果:目视

pyautogui.hotkey
命令似乎没有被执行,Chrome缓存/cookies清除窗口没有打开。

我有几种关于它为什么不能正常工作的理论(结果证明它们都是无关紧要的):

  1. 按键命名错误 -> 尝试了本官方手册中所有对应的按键名称。
  2. pyautogui.PAUSE
    设置影响热键操作 -> 将其从脚本中删除。
  3. PyAutoGUI 不专注于 Chrome,因此热键被发送到错误的应用程序 -> 在空白 Chrome 页面中间添加额外的单击以确保其获得焦点。
  4. Windows 会将此热键组合与不同的热键组合混淆在按下所有内容之前 -> 更改所有相应的 Windows 热键组合。
  5. 这只是
    pyautogui.hotkey
    问题 -> 尝试使用
    pyautogui.hold
    pyautogui.keyDown
  6. 来解决它

作为最后一个结果,我看到部分热键组合起作用(按下 CTRL + SHIFT)。

对于其他结果与初始脚本相同(未打开缓存/cookie 清除窗口)。

我最终尝试通过 CTRL + ALT + DEL 组合打开 Windows 任务管理器。它对我来说效果不太好。行为与 Chrome 脚本的行为相同。

同时,Chrome 内部的字母数字键(例如 CTRL + SHIFT + N)和外部的字母数字键(CTRL + A)等组合键都可以正常工作,正如预期的那样。


UPD:我刚刚找到了另一种方法,我认为它提供了一些线索。

我使用W3C在线按键事件查看器来查看键盘输入日志。

结果如下:

案例1:

pyautogui.hotkey('ctrlleft', 'shiftleft', 'altleft')

键盘输入日志:

result for CTRL + SHIFT + ALT

案例2:

pyautogui.hotkey('ctrlleft', 'shiftleft', 'delete')

键盘输入日志:

result for CTRL + SHIFT + DELETE

有人可以解释一下案例 2 中发生了什么以及为什么吗?


0
投票

用这个代替,它有效:

pyautogui.hotkey('ctrl','shiftright','shiftleft','del')
© www.soinside.com 2019 - 2024. All rights reserved.