MaaXYZ / MaaFramework

基于图像识别的自动化黑盒测试框架 | An automation black-box testing framework based on image recognition
GNU Lesser General Public License v3.0
1.28k stars 145 forks source link

無法啟動MaaDebugger([Errno 10048] error while attempting to bind on address) #292

Open UnexIstiD opened 1 month ago

UnexIstiD commented 1 month ago

本人是近日才開始接觸MaaFramework的新手,照著MaaPracticeBoilerplate的步驟將基本環境建置完成後,想啟動MaaDebugger時卻失敗,只會在瀏覽器跳出一個全空白的分頁,CMD上的錯誤訊息如下圖。我已經嘗試過kill terminal、重啟設備,都是無效,想請問我應如何排除此問題? 螢幕擷取畫面 2024-07-25 012110

另外本人先前是用按鍵精靈,但因為我非資工相關科系,寫出來的東西可維護性太低,一個兩年前寫出來的腳本,想改一個步驟卻牽一髮動全身。本想用OOP的概念去重寫,但後來想起Maa也是一個物件導向的腳本語言,所以決定轉換跑道。

也因此我會希望將腳本加入一些計數、多線程的功能在裡面,也想使用一些and、or、while迴圈等等的功能,所以低代碼Json不足以滿足我的需求,但身為一個連Github帳號都是第一天註冊的新手,看了說明還是不大了解如何使用Pipeline去撰寫腳本並運行,不知道哪裡能找到更詳細的教學。

最後,由於我沒有自己的手機門號(是家人用他們的身份辦的),所以不方便辦理QQ帳號(我不敢用tempsms之類的免洗門號),也沒辦法進行驗證,所以不曉得是否有其他的討論區(Discord、Line、Facebook等等),能夠讓我在開發碰壁時請教各位巨佬神。

dongwlin commented 1 month ago

可能是你的8080端口被其他应用给占用了,所以导致maa debugger无法正常启动。 如果你不方便使用qq的话,也可以直接在github上的discussions或issues板块进行讨论。

neko-para commented 1 month ago

如果需要更强的流程控制能力, 无论是直接集成MaaFramework还是使用注册自定义任务, 都是需要使用某一个通用编程语言的. 可以先参考集成文档中已有的语言, 看是否有熟悉的. 即使没有, 也可以考虑使用自定义任务ExecAgent模式, 该模式下, 你可以使用绝大部分通用编程语言, 使用stdio来和MaaFramework通信. 这种模式和CGI模式很接近.

neko-para commented 1 month ago

由于你直接使用了项目模板, 你也可以考虑使用Maa的VSCode插件. 插件提供了和Debugger较为类似的功能(执行任务, 查看执行进度和效果等), 在首次配置完成后也可以直接点击执行任务.

UnexIstiD commented 1 month ago

使用VS插件後還是叫不出Debugger頁面,呈現完全地空白,這是正常畫面嗎? 螢幕擷取畫面 2024-07-26 130623 有其他可以指定視窗句柄的語法嗎?

neko-para commented 1 month ago

因为vscode插件的web界面的这部分(launch部分)是展示结果的, 你执行了一个任务时会自动把这个界面拉起来. crop部分是用于截图的, 也是需要能连接才能使用.

你可以在pipeline中点击某个任务上面的launch按钮, 如果无效果的话, 可以尝试先执行'Maa: launch interface'进行配置.

UnexIstiD commented 1 month ago

但我沒辦法指定hwnd,加上也叫不出Debugger,沒辦法指派ADB或Hwnd 螢幕擷取畫面 2024-07-26 165551

neko-para commented 1 month ago

但我沒辦法指定hwnd,加上也叫不出Debugger,沒辦法指派ADB或Hwnd 螢幕擷取畫面 2024-07-26 165551

使用win32需要你在interface.json中指定查询hwnd的方式

参考


关于Adb, 你使用的是什么模拟器? 是Maa自己无法搜索到, 然后插件目前也没提供手动编辑输入的能力, 所以用不了吗

{
  "controller": {
    "name": "ADB 默认方式",
    "type": "Adb"
  },
  "adb": {
    "adb_path": "/usr/local/bin/adb",
    "address": "127.0.0.1:6555",
    "config": {}
  }
}

你可以考虑在interface.json的同目录的config/maa_pi_config.json文件中添加上面的内容, 然后修改controller.name, adb.adb_path, adb.address等项, 然后重新执行Maa: launch interface配置后续内容

UnexIstiD commented 1 month ago

目前是使用藍疊,我用按鍵精靈的工具可以直接看到Hwnd,但是我不知道要怎麼讓Maa根據類名去抓,在按鍵精靈可以直接這樣用 螢幕擷取畫面 2024-07-26 232753 但是我不知道要怎麼讓Maa根據類名去抓,目前我在按鍵精靈可以直接這樣用 Hwnd1 = Plugin.Window.Find("Qt5154QWindowOwnDCIcon", 0) Hwnd2 = Plugin.Window.Findex(Hwnd1, 0, "Qt5154QWindowIcon", 0) Hwnd3 = Plugin.Window.Findex(Hwnd2,0,"BlueStacksApp",0) 然後Hwnd3就是模擬器的視窗句柄,不曉得Maa有沒有類似的函式。

另外,我可能會用C++或python去寫腳本,不確定集成代碼那邊是什麼意思,哪些是必須保留的部分,而哪些又是範例可以自行修改?

neko-para commented 1 month ago

如果你需要操作模拟器的话,蓝叠Maa应该是可以直接扫描到的

UnexIstiD commented 1 month ago

如果你需要操作模拟器的话,蓝叠Maa应该是可以直接扫描到的

感謝,目前已經能成功啟動並掃到視窗了

那麼接下來倘若我以python去寫,我應該如何調用Maa的功能?(例如我想要取得畫面中某個圖示的座標,我要怎麼在調用Maa之後讓其回傳座標與相似度等資訊供python程式主體使用?) 然後調試的時候要怎麼啟動(還是說就直接在terminal輸入python 腳本.py)?

neko-para commented 1 month ago

@MistEO 所以需要py的文档(

UnexIstiD commented 1 month ago

想請問下 有Python集成的API Manual或Guide之類的資源嗎?

MistEO commented 1 month ago

可以参考 py sample

UnexIstiD commented 1 month ago

可以参考 py sample

smaple與鄰近的幾個檔案我都看過了,但問題還是沒有解決 函式該如何使用?每一條函式回傳了什麼?如何啟動以集成編寫的腳本? 不曉得有沒有Docstrings可以參考?

MistEO commented 1 month ago

没有文档。我觉得 sample 和接口注释以及挺足够了,我们几乎每个接口都有注释,包括参数和返回值解释。一般的文档也就是把这些再抄一遍而已