Python, Pyautogui, and CTRL-C

9
我正在尝试完成一个简单的过程,打开一个基于Web/浏览器的文档,选择其中的一个字段,然后将其复制到我的操作系统剪贴板中。以下是规格:
Windows 7 Google Chrome(最新稳定版) Python 3.5 pyautogui用于键盘/鼠标控制
这是我要处理的字段(http://screencast.com/t/jt0kTagb)。当点击小箭头时,它会弹出一个日历以选择日期。如果直接点击该字段,则会突出显示该字段的内容。在此情况下,当我手动按CTRL+C时,该字段的内容按预期直接进入剪贴板。
我尝试了两种方法来将该字段放入剪贴板。第一种是利用pyautogui的keyDown/up和press函数,大致如下:
imageCoord = noClick("img/date.png")
x, y = pyautogui.center(imageCoord)
pyautogui.click(x, y + 20)
pyautogui.keyDown('ctrl')
pyautogui.press('c')
pyautogui.keyUp('ctrl')

然后我尝试使用应用程序菜单,如果您右键单击某个内容,该菜单会显示如下:

imageCoord = noClick("img/date.png")
x, y = pyautogui.center(imageCoord)
pyautogui.click(x, y + 20, button='right')
pyautogui.press("down", presses=2)
time.sleep(1)
pyautogui.press('enter')

最后,我尝试了pyautogui.hotkey()函数,它看起来像这样:
imageCoord = noClick("img/date.png")
x, y = pyautogui.center(imageCoord)
pyautogui.click(x, y + 20, button='right')
pyautogui.hotKey('ctrl', 'c')

在这三个事件中,字段确实被选中了,我尽力推测按键是正常的,因为之前发生的所有其他按键/函数都没有问题。
我面临的问题是,当我以与上述两个脚本相同的方式手动执行此操作时,我能够获得内容。但是当我使用这些脚本时,剪贴板从未更新/填充字段的内容。在使用Python和Windows剪贴板时,我是否忽略了什么或未考虑到什么?
最终,我只是想将该值放入Excel表格中。任何建议都将不胜感激!
3个回答

3

2
我还发现了另一个自动化脚本上的这个问题,并已经尝试排除了几天。我也在使用Python 3.5和Windows 7。我可以排除它与Google Chrome有任何关系,因为我的特定脚本实际上是在与SAP一起工作。
在Read the Docs上pyautogui的文档(https://pyautogui.readthedocs.io/en/latest/cheatsheet.html#keyboard-functions)中给出了一个直接的示例,使用Ctrl + C将文本复制到剪贴板,所以我可以确认你并没有做错什么。我认为你只是在遇到一个错误。
我在项目的GitHub页面上开了一个问题:https://github.com/asweigart/pyautogui/issues/102

与此同时,请尝试这个: - awpelican

0

我找到了解决方案!

pyautogui.keyDown('ctrl')
pyautogui.keyDown('c')
pyautogui.keyUp('c')
pyautogui.keyUp('ctrl')

在我的脚本中,我必须在之后使用 root.update()。

1
你的回答可以通过提供更多支持信息来改进。请[编辑]以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接