簡體   English   中英

Python、Pyautogui 和 CTRL-C

[英]Python, Pyautogui, and CTRL-C

我正在嘗試完成一個簡單的過程,即打開基於 Web/瀏覽器的文檔,在所述文檔中選擇一個字段,然后將其復制到我的操作系統的剪貼板中。 這是規格:

Windows 7 Google Chrome(最新穩定版) Python 3.5 pyautogui 用於鍵盤/鼠標控制

這是我正在嘗試使用的領域( http://screencast.com/t/jt0kTagb )。 單擊該小箭頭時,它會彈出以顯示日歷以選擇日期。 如果您直接單擊該字段,則會突出顯示該字段的內容。 當我在這種情況下手動按 CTRL+C 時,字段的內容 go 按預期直接進入剪貼板。

我嘗試了兩種方法將字段 go 放入我的剪貼板。 第一個是利用 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() function:

imageCoord = noClick("img/date.png")
x, y = pyautogui.center(imageCoord)
pyautogui.click(x, y + 20, button='right')
pyautogui.hotKey('ctrl', 'c')

在所有三個事件中,確實選擇了該字段,並且盡我所能告訴按鍵正在經歷,因為在 go 之前發生的所有其他按鍵/功能都順利關閉。

我面臨的問題是,當我以與上述兩個腳本相同的方式手動執行此操作時,我能夠獲取內容。 當我使用腳本時,剪貼板永遠不會更新/填充字段的內容。 在使用 Python 和 Window 的剪貼板時,有什么我忽略或沒有考慮的事情嗎?

最后,我要做的就是將該值放入 excel 表中。 任何意見,將不勝感激!

我還在一個不同的自動化腳本上發現了這個問題,並且已經解決了幾天的問題。 我也在 Python 3.5 和 Windows 7 上。我可以排除它與 Google Chrome 有任何關系,因為我的特定腳本實際上是在使用 SAP。

pyautogui on Read the Docs 的文檔( https://pyautogui.readthedocs.io/en/latest/cheatsheet.html#keyboard-functions )提供了使用 Ctrl + C 將文本復制到剪貼板的直接示例,所以我可以驗證您實際上並沒有做錯什么。 我相信您只是在這里查看錯誤。

我在項目的 GitHub 頁面上打開了一個問題: https://github.com/asweigart/pyautogui/issues/102

使用PyAutoGui模塊。

pip install PyAutoGUI

我們可以輕松地使用熱鍵組合。

按 Ctrl+C

>>> import pyautogui
>>> pyautogui.hotkey('ctrl', 'c')

我找到了解決方案!

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM