pyautogui typewrite() 写入 shell 而不是点击 input/document

pyautogui typewrite() writes to shell instead of clicked input/document

我正在关注 Chapter 18 of Automate the Boring Stuff with Python。我在 OS X。

我正在尝试使用 pyautogui 单击文本输入或文本文档,然后输入文本。

我在 shell 中输入以下内容((370, 80) 是我的 Chrome 地址栏的坐标):

pyautogui.click(370,80); pyautogui.typewrite('Hello world!')

click() 似乎没有按预期工作。当我点击输入时,它会突出显示输入中的文本,但即使我在点击后手动输入,文本也会显示在 shell 中。请参阅以下 运行 上面一行结果的屏幕截图:

positionmoveTomoveReldragTo 等其他方法按预期工作。

如果我运行 time.sleep(5); pyautogui.typewrite('test')在线程休眠时手动点击文本文档或输入,文本按要求输入。

可能是什么问题?

原来 OSX 中存在与 click() 相关的错误。这是解决方法:

  1. 打开 pyautogui 包目录中的 __init__.py 文件(使用 this answer.
  2. 找到您的 Python 包的位置
  3. 在第 510 行(在 click() 函数中),将 platformModule._multiClick() 的第四个参数从 3 更改为 clicks(无引号)。所以正确的调用是 platformModule._multiClick(x, y, button, clicks)
  4. 保存编辑后的文件。

有一个 open PR 可以解决这个问题。