【问题标题】:How can I perform a click without moving the mouse in python?如何在不移动鼠标的情况下在 python 中执行单击?
【发布时间】:2020-02-24 11:15:56
【问题描述】:

我正在尝试制作一个可以控制鼠标在 bluestacks 实例中执行操作的程序(对于那些不熟悉 bluestacks 的人,bluestacks 的实例基本上是第二个打开的 bluestacks,可以运行相同时间作为另一个 bluestacks 实例)。我设法让脚本与 PyAutoGUI 一起工作,但我不得不使用 MoveTo 命令将鼠标移动到 X、Y 位置。 我的问题是,当尝试一次运行多个实例和脚本时,如果在很短的时间内同时从不同的脚本中单击,则其中一次单击“出错”或根本没有发生,这会停止实例脚本,直到我手动重新启动它。 有没有人建议我如何让脚本在屏幕的某个位置“单击”而不用鼠标实际移动?

编辑:我知道 PyAutoIt,但不相信它会起作用,因为我正在运行同一程序的多个实例而不是不同的程序

【问题讨论】:

  • 难道没有两个功能,一个是移动鼠标并点击,一个是即时点击给定的位置。
  • 其实我查了pyautogui.readthedocs.io/en/latest/mouse.html docs for pyautogui,有一个pyautogui.click(x=100, y=200)函数,但是它“# move to 100, 200, then click the鼠标左键。”,这是问题所在,它移动然后单击,而不仅仅是单击
  • 如果不将鼠标实际移动到按钮上,您将无法单击。立即移动到按钮是最小的。
  • 嗯,好的,我会看看我能做到这一点。您知道是否可以使用 pyautogui 同时运行多个按键?例如,如果我选择一个实例,运行 keydown("a")(向左走)然后选择另一个实例并运行 keydown("a");第二个keydown会取消第一个吗?
  • 你不能把它们锁起来吗?也许可以使用某种回调?在第一次点击之后调用第二次点击。也许创建一个函数来接受点击列表并一个接一个地执行?但我认为这种行为并没有在模块本身中实现。注意:我只使用过一次 pyautogui 来制作一个玩扑克的机器人,所以多次快速点击对我来说不是问题。

标签: python automation instance pyautogui bluestacks


【解决方案1】:

最好的方法是在您的系统上安装 Android 调试桥 (ADB),然后为每个 Bluestacks 实例启用 ADB 调试。现在,您可以使用 ADB 将命令直接发送到您选择的确切模拟器,并且您可以并行执行,因为所有命令都保证通过设备 ID 在指定设备上运行。

adb -s <deivce_id> shell input tap x y 其中 x & y 是屏幕上的坐标。

你也可以用 Appium 做同样的事情,但它仍然需要 ADB 并且会更多地参与 - 但是,如果你想要构建的不仅仅是一个简单的脚本,那么你真的应该看看 Appium。

您可以使用 ADB 做更多事情 - 我也有一个 comprehensive ADB tutorial,如果您想知道除了点击 x、y 线之外您还可以用它做什么。

我还有非常全面的 Appium 教程播放列表,从 beginneradvanced framework design

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多