【问题标题】:Run and handle external application from python从 python 运行和处理外部应用程序
【发布时间】:2018-04-17 18:21:00
【问题描述】:

我想开发 Python 脚本来打开一些基于 Windows 的应用程序,然后输入一些数据/命令来模拟用户使用键盘:

  • 然后运行 ​​MS Calculator:“5”、“+”、“8”、“/”、“2”、“Enter”,就是这样
  • 然后运行 ​​MS 记事本:“Hello world!”、“Ctrl+s”、“我的文件”、“Enter”、“Alt+F4”

当然它可以在成功时返回像1这样的退出代码并写入一些日志。

我相信有一些库(可能用于 UI 测试目的),但我不知道。

我知道有 Selenium,但恐怕它只适用于网络浏览器应用程序。

【问题讨论】:

  • 测试Windows Apps最好的解决方案是Winium
  • @Andersson 我尝试了 pyahk,但看起来该项目已停止。我很难找到正确的 .dll 来使用通过 pip 安装的 pyahk。你有什么解决办法吗?
  • 用 Python 2.7 试试吧。安装应该没有问题
  • @Andersson 这就是我所做的。问题在于 AHK(或其库)而不是 python 或 pyahk 本身。

标签: python windows selenium testing autohotkey


【解决方案1】:

为什么不直接使用 AutoHotkey?

完整脚本:

RunWait, Calc.exe
sleep, 500
Send, 5{+}8{/}2{Enter}
ExitApp, 1337

此脚本可以编译为独立的 .Exe 并从 Python 脚本运行,该脚本可以通过 StdInput 检索其退出代码 1337。

【讨论】:

    【解决方案2】:

    如果你喜欢用 Python 语言编写脚本,你可以使用 Autopythonlauncher Click Here 这个软件,你可以用 Python 脚本代码制作可点击的图片。然后,您可以简单地编写 python 代码来运行外部应用程序,然后您可以 发送任何文本 或任何 键盘快捷键宏(不关注 Windows - 这意味着您可以发送它适用于任何 Windows 应用程序),它是 3d 中的一切。选择一张图片并在命令编辑器中编写此示例代码。

    这个 Python 脚本在没有 Autopythonlauncher 的情况下也可以工作。 (见底部)

    #run calc
    #######################
    import subprocess
    
    cmd = "C:/Windows/System32/calc.exe"
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE, creationflags=0x08000000)
    process.wait()
    #######################
    
    
    
    
    # you can send any text or Keyboard Shortcuts Combinations - pyautogui.hotkey('ctrl', 'c')
    # send "5", "+", "8", "/", "2"
    # send "Enter" 
    #######################
    import pyautogui
    import time
    
    time.sleep(.500)
    pyautogui.press(['5','+','8','/','2']) 
    pyautogui.hotkey('enter')
    #######################
    

    观看此介绍性 youtube 视频Click Here,您可以了解 AutoPythonlauncher 软件的功能。

    注意: 如果您想在没有 AutopythonLauncher 软件的情况下对其进行测试。

    你需要制作这个bat文件, 运行它来安装包 pyautogui。 唯一的魂斗罗是你不能使用它(不关注 Windows)

    安装.bat

    C:\Python27\scripts\pip.exe install pyautogui
    pause
    

    【讨论】:

      猜你喜欢
      • 2016-08-14
      • 1970-01-01
      • 2016-07-31
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      相关资源
      最近更新 更多