Giter Site home page Giter Site logo

jgm-automator's Introduction

JGM-Automator

NoneType报错的临时解决方案是换用openCV3.x版本,如果你不会更换,请执行

  python -m pip install opencv-python==3.* -i https://pypi.tuna.tsinghua.edu.cn/simple/

本项目仅在分辨率大于 540x960 的 9:16 的设备下正常工作,其他非9:16比例不保证

特点

  • 🔥🔥🔥 自动升级政策
  • 可选自动完成任务
  • 自动收货
  • 自动收金币
  • 自动升级建筑
  • 🔥 可选自动重启 以加速收火车
  • 可选自动开红包,相册
  • 想只收金色货物的,只要选择收哪些建筑的货就行了,因为金建筑一定是金色货物。
  • 本作品的诞生离不开 UIAutomator2 ,一个 Python 封装的安卓自动化测试库,比原生 adb shell 命令强大得多,方便得多。

安装与运行

  • 如果你没有安装 Python,请先安装 Python3.7.4

  • 如果你没有安装 adb ,可以使用本项目 adb 文件夹里的 adb ,只需要把这个文件夹的路径添加到环境变量的 Path 中即可。

  • 以上都安装后,打开 CMD 或者 Powershell 或是其他任何终端,执行以下命令:

    # 打开终端
    # 以下是一整行
    python -m pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
  • 如果使用 MuMu 模拟器,请先 adb 连接 MuMu 模拟器。

    adb connect 127.0.0.1:7555
  • 获取 device 名称,并填写至 main.py。如果是 MuMu 模拟器则填写 127.0.0.1:7555

    adb devices
  • 在已完成 adb 连接后,在手机安装 ATX 应用。

    python -m uiautomator2 init
  • 在手机上打开 ATX ,点击 启动 UIAutomator 选项,确保 UIAutomator 是运行的。如果是 MuMu 模拟器,长时间不运行的话,再次运行前也需要重新打开ATX(小黄车)。

  • 如何运行这个脚本:

    # 在该项目的文件夹根目录打开
    python main.py
  • 能动就说明能成功运行,接下来你可以退出脚本(Ctrl+C 或者 关掉终端窗口),在 main.py 中修改你的配置。

  • 最佳排布计算强烈推荐这个euyuil/JiaGuoMengCalculator,完全在线运行,不需要输入繁琐的等级,只需要星级和别的加成,就能知道哪个建筑能输出最大火力,最值得升级。

说明

建筑编号

升级列表和收货列表

main.py里,定义这两个列表,即可指定要升级的建筑和要收货的建筑

 # 升级建筑列表
up_list = [(2,1),(3,5)] # 2号升级1次,3号升级5次
# 收货过滤列表
harvest_filter = [5,6,7,8] # 只收取5、6、7、8号建筑的货物
# 红包过滤列表 
auto_red_bag = ['small', 'middle', 'large', 'photo'] # 收取小红包, 中红包, 大红包, 和相册

实现细节

政策升级界面为检测绿色箭头实现

对于上述政策升级页面,我们分离三个通道,并进行二值化,最后检测轮廓。

收火车时,先点按货物,然后检测点按前后绿光差值获取货物目的地

实现这一功能时,若使用原生 adb shell 实现的话需要多线程或者多进程才行(分别执行按住和截图命令)。在这里,由于 UIAutomator 的强大轮子,使得实现这一功能非常方便。

jgm-automator's People

Contributors

binqizhang avatar dongagent avatar eindex avatar jiahonzheng avatar jimowutong42 avatar tsingwei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jgm-automator's Issues

运行main.py时出错,使用的是手机

Traceback (most recent call last):
File "main.py", line 21, in
if b'connected' in subprocess.check_output('adb connect '+ MuMu):
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 395, in check_output
**kwargs).stdout
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 472, in run
with Popen(*popenargs, **kwargs) as process:
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 775, in init
restore_signals, start_new_session)
File "/usr/local/Cellar/python/3.7.4_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 1522, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'adb connect 127.0.0.1:7555': 'adb connect 127.0.0.1:7555'

下载requirements.txt报错

ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'

这个问题怎么解决?

他会卡在升级建筑的页面

卡在升级建筑的页面一直显示然后一直提示no goods wait 2s
能不能弄个检测10次火车没来就自动重启之类的 也方便到0点刷火车

城市任务判定报错

如果出现以下错误:
File "C:\Users\zhang\Documents\workspace\adbs\JGMA\cv.py", line 71, in findTaskBubble if len(cnts[1]): TypeError: object of type 'NoneType' has no len()
可能是cv2版本问题,我没详查。我的是opencv-python 4.2.0.34
修改源码cv.py中

       if len(cnts[1]):
            return True
        else:
            return False

      if cnts[1] is None:
            return False
        elif len(cnts[1]):
            return True
        else:
            return False

加一条判定,避免NoneType错误,可解决。

python main.py报错

vagile@VagileMBP:/github/JGM-Automator$ python main.py
Traceback (most recent call last):
File "main.py", line 2, in
from automator import Automator
File "/Users/vagile/github/JGM-Automator/automator.py", line 16
def init(self, device: str, targets: dict):
^
SyntaxError: invalid syntax
vagile@VagileMBP:~/github/JGM-Automator$

求解

运行之后无法挂机

采用1920*1080 16:9分辨率
可以正常启动软件,但是软件会误触公告,导致无法正常工作,也无法检查火车状态。

关于收货成功率的建议

我简单测试了一下,发现收货时对于货物对应建筑的识别可能受到收益产生时的效果(金币跳动、闪光)瞬时干扰,于是我尝试修改了一下,当收货完毕后,检测到还有货物未收取,就重新执行收货动作,此时再识别货物对应建筑时,可能就恰好避开了干扰效果,直到火车离开前反复执行,就可以提高识别率和收货成功率。

你好,我这出了一个奇怪的错误

Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 157, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
raise err
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen
chunked=chunked,
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
conn.request(method, url, **httplib_request_kw)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1244, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1290, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1239, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1026, in _send_output
self.send(msg)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 966, in send
self.connect()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 184, in connect
conn = self._new_conn()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 169, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x10AF1C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
**response_kw
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
**response_kw
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
**response_kw
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\retry.py", line 436, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=63812): Max retries exceeded with url: /info (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10AF1C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "huawei.py", line 27, in <module>
instance.start()
File "C:\Users\xxx\Desktop\JGM-Automator-master\automator.py", line 51, in start
self.d.click(550/1080, 1650/1920)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 364, in click
x, y = self.pos_rel2abs(x, y)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 155, in convert
self.server.window_size())  # size will be [width, height]
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\__init__.py", line 396, in window_size
info = self._reqsess.get(self.path2url('/info')).json()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\__init__.py", line 245, in request
self).request(method, url, **kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=63812): Max retries exceeded with url: /info (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x10AF1C90>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

只收金币不收货和升级建筑

前天用的都正常,可以收金币,在main里修改后可以升级指定建筑和收货。
昨晚开始就无法升级指定建筑和收货了。只是刷金币,出现 no goods。

自动升级政策时候出错

Traceback (most recent call last):
  File "main.py", line 30, in <module>
    instance.start()
  File "/Users/xxxxxxxx/work/git_private/JGM-Automator/automator.py", line 42, in start
    self.check_policy()
  File "/Users/xxxxxxxx/work/git_private/JGM-Automator/automator.py", line 138, in check_policy
    if len(UIMatcher.findGreenArrow(self.d.screenshot(format="opencv"))):
  File "/Users/xxxxxxxx/work/git_private/JGM-Automator/cv.py", line 31, in findGreenArrow
    if cnts[1]:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

很迷我的OpenCV也报错了

OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:726: error: (-215:Assertion failed) !buf.empty() in function 'cv::imdecode_'

运行程序后报错了,怎么解决啊,没改过代码

Traceback (most recent call last):
File "...\JGM-Automator-master\main.py", line 19, in
instance.start()
File "..\JGM-Automator-master\automator.py", line 21, in start
self._match_target(target)
File "..\JGM-Automator-master\automator.py", line 69, in match_target
screen = self.d.screenshot(format="opencv")
File "..\Python37\lib\site-packages\uiautomator2_init
.py", line 1186, in screenshot
return self.session().screenshot(*args, **kwargs)
File "<..\Python37\lib\site-packages\decorator.py:decorator-gen-6>", line 2, in screenshot
File "..\Python37\lib\site-packages\retry\api.py", line 74, in retry_decorator
logger)
File "..\Python37\lib\site-packages\retry\api.py", line 33, in _retry_internal
return f()
File "..\Python37\lib\site-packages\uiautomator2\session.py", line 482, in screenshot
return cv2.imdecode(nparr, cv2.IMREAD_COLOR)
cv2.error: OpenCV(4.1.1) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:726: error: (-215:Assertion failed) !buf.empty() in function 'cv::imdecode
'

运行过程中报了一个奇怪的错,方便看一下原因吗

Traceback (most recent call last):
File "C:\Users\xxx" +
"\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 157, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\xxx" +
"\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
raise err
File "C:\Users\xxx" +
"\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
sock.connect(sa)
ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen
    chunked=chunked,
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
    conn.request(method, url, **httplib_request_kw)
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1244, in request
    self._send_request(method, url, body, headers, encode_chunked)
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1290, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1239, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 1026, in _send_output
    self.send(msg)
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 966, in send
    self.connect()
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 184, in connect
    conn = self._new_conn()
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connection.py", line 169, in _new_conn
    self, "Failed to establish a new connection: %s" % e
    urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x0DB69530>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\adapters.py", line 449, in send
    timeout=timeout
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
    **response_kw
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
    **response_kw
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 762, in urlopen
    **response_kw
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\connectionpool.py", line 720, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
    File "C:\Users\xxx" +
    "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\urllib3\util\retry.py", line 436, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
    urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=58566): Max retries exceeded with url: /info (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0DB69530>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "mumu.py", line 27, in <module>
instance.start()
        File "C:\Users\xxx" +
        "\Desktop\JGM-Automator-master\automator.py", line 51, in start
        self.d.click(550/1080, 1650/1920)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 364, in click
        x, y = self.pos_rel2abs(x, y)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 155, in convert
        self.server.window_size())  # size will be [width, height]
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\__init__.py", line 396, in window_size
        info = self._reqsess.get(self.path2url('/info')).json()
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 546, in get
        return self.request('GET', url, **kwargs)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\__init__.py", line 245, in request
        self).request(method, url, **kwargs)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 533, in request
        resp = self.send(prep, **send_kwargs)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\sessions.py", line 646, in send
        r = adapter.send(request, **kwargs)
        File "C:\Users\xxx" +
        "\AppData\Local\Programs\Python\Python37-32\lib\site-packages\requests\adapters.py", line 516, in send
        raise ConnectionError(e, request=request)
        requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=58566): Max retries exceeded with url: /info (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0DB69530>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。'))

train runing cause crash

每次收完一种货物之后,开始收货第二种,出现闪退。CMD中出现Reset app提示

Device的问题

Device1 = 'QV7039V30X'
Device2 = 'CB512BC4ZL'
Device1Net = '10.21.20.105'
Device2Net = '10.21.59.70'
MuMu = '127.0.0.1:7555'

大佬这几个应该怎么改 用的mumu模拟器
会报adbutils.errors.AdbError: device 'CB512BC4ZL' not found 这个未找到

uiautomator2.exceptions.JsonRpcError: -32601 Method not found: <Method not found> data: , method: injectInputEvent

在跑了一段时间之后出现以下错误,似乎和火车有关:

PS C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master> python main.py
2019-11-04 17:46:00,482 - root - INFO - device screen size 1080, 1920
2019-11-04 17:46:00,548 - root - INFO - App is front. JGM agent start in 5 seconds
2019-11-04 17:46:17,192 - root - INFO - [Mon Nov 4 17:46:17 2019] Train come.
Traceback (most recent call last):
File "main.py", line 38, in
instance.start()
File "C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master\automator.py", line 46, in start
self.check_goods()
File "C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master\automator.py", line 167, in check_goods
self.harvest(self.harvest_filter, good_id)
File "C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master\automator.py", line 85, in harvest
pos_id = self.guess_good(good)
File "C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master\automator.py", line 97, in guess_good
diff_screens = self.get_screenshot_while_touching(GOODS_POSITIONS[good_id])
File "C:\Users\qianxiaowei\Downloads\JGM-Automator-master\JGM-Automator-master\automator.py", line 108, in get_screenshot_while_touching
self.d.touch.down(x,y)
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 349, in down
obj.jsonrpc.injectInputEvent(ACTION_DOWN, x, y, 0)
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2_init_.py", line 440, in call
params, http_timeout)
File "<C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\decorator.py:decorator-gen-12>", line 2, in jsonrpc_retry_call
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\retry\api.py", line 74, in retry_decorator
logger)
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\retry\api.py", line 33, in retry_internal
return f()
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2_init
.py", line 457, in jsonrpc_retry_call
return self.jsonrpc_call(*args, **kwargs)
File "C:\Users\qianxiaowei\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2_init
.py", line 542, in jsonrpc_call
raise err
uiautomator2.exceptions.JsonRpcError: -32601 Method not found: data: , method: injectInputEvent

启动main.py时报错是怎么回事呢?

需要手机吗?还是只有电脑就行。
(python37) C:\Users\Administrator\Desktop\JGM-Automator-master>python main.py
Traceback (most recent call last):
File "main.py", line 16, in
instance = Automator('localhost:7555', targets)
File "C:\Users\Administrator\Desktop\JGM-Automator-master\automator.py", line 11, in init
self.d = u2.connect(device)
File "C:\ProgramData\Anaconda3\envs\python37\lib\site-packages\uiautomator2_init_.py", line 122, in connect
return connect_usb(addr)
File "C:\ProgramData\Anaconda3\envs\python37\lib\site-packages\uiautomator2_init_.py", line 164, in connect_usb
lport = device.forward_port(7912)
File "C:\ProgramData\Anaconda3\envs\python37\lib\site-packages\adbutils_init_.py", line 383, in forward_port
for f in self.forward_list():
File "C:\ProgramData\Anaconda3\envs\python37\lib\site-packages\adbutils_init_.py", line 224, in forward_list
c.check_okay()
File "C:\ProgramData\Anaconda3\envs\python37\lib\site-packages\adbutils_init_.py", line 137, in check_okay
raise AdbError(self.read_string())
adbutils.errors.AdbError: unknown host service

在MUMU模拟器上运行好像坐标设置有问题

mumu模拟器上运行,滑动收取金币明显上移,也检测不到小火车,一直报no train.
调整了模拟器分辨率设置还是不行

看到前面问题里大佬说,改成 USB 调试模式 这里不是很明白能否详细说明

自动升级政策可能需要更多的延迟

我的mumu自动升级政策失败,观测后猜想鼠标点的太快了,我加了两行等待时间。


        # 看看政策中心那里有没有冒绿色箭头气泡
        if len(UIMatcher.findGreenArrow(self.d.screenshot(format="opencv"))):
            # 打开政策中心
            self.d.click(0.206, 0.097)
            mid_wait()
            # 确认升级
            self.d.click(0.077, 0.122)
            # 拉到顶
            self._slide_to_top()
            # 开始找绿色箭头,找不到就往下滑,最多划5次
            for i in range(5):
                screen = self.d.screenshot(format="opencv")
                arrows = UIMatcher.findGreenArrow(screen)
                if len(arrows):
                    **time.sleep(2)**
                    x,y = arrows[0]
                    self.d.click(x,y) # 点击这个政策
                    short_wait()
                    **time.sleep(2)**
                    self.d.click(0.511, 0.614) # 确认升级
                    print("[%s] Policy upgraded.    ++++++"%time.asctime())
                    self._back_to_main()

                    return
                # 如果还没出现绿色箭头,往下划
                self.d.swipe(0.482, 0.809, 0.491, 0.516,duration = 0.3)
                **time.sleep(2)**
            self._back_to_main()

华为P10,运行一会就出现混乱

手机是华为P10,运行大概1个小时左右,操作出现混乱,收货的时候会退出游戏,点开其他应用,屏幕会闪烁。终止程序后手机会非常卡,应用图标很长时间才会刷出来。重启手机之后就好了,怎么回事?

政策中心升级的时候程序报错退出

Traceback (most recent call last):
File "main.py", line 25, in
instance.start()
File "/mnt/d/Downloads/JGM-Automator/automator.py", line 42, in start
self.check_policy()
File "/mnt/d/Downloads/JGM-Automator/automator.py", line 142, in check_policy
if len(UIMatcher.findGreenArrow(self.d.screenshot(format="opencv"))):
File "/mnt/d/Downloads/JGM-Automator/cv.py", line 36, in findGreenArrow
cX = int(M["m10"] / M["m00"])
ZeroDivisionError: float division by zero

自动点红包 卡片

红包 卡片 太多了 点不过来 求自动点~
and
imutils 需要通过提示 pip install imutils 安装下~

RuntimeError: atx-agent recover failed报错

按照教程一步一步走,最后在main.py执行的时候报这个错
PS D:\JGM-Automator> python.exe .\main.py
Successfully connected to MuMu.
C:\Program Files\Python37\lib\site-packages\uiautomator2_init_.py:177: RuntimeWarning: start atx-agent ...
warnings.warn("start atx-agent ...", RuntimeWarning)
Traceback (most recent call last):
File ".\main.py", line 23, in
instance = Automator(MuMu, up_list, harvest_filter,auto_policy=policy,auto_task=task,speedup=speed_up)
File "D:\JGM-Automator\automator.py", line 14, in init
self.d = u2.connect(device)
File "C:\Program Files\Python37\lib\site-packages\uiautomator2_init_.py", line 122, in connect
return connect_usb(addr)
File "C:\Program Files\Python37\lib\site-packages\uiautomator2_init_.py", line 186, in connect_usb
raise RuntimeError("atx-agent recover failed")
RuntimeError: atx-agent recover failed

使用的是Mumu模拟器

NoneType报错,运行main.py后直接出现的这个

C:\Python3.7.4\python.exe D:/game/JGM/qingwei/main.py
Successfully connected to MuMu.
1080 1920
App is front. JGM agent start in 5 seconds
Traceback (most recent call last):
File "D:/game/JGM/qingwei/main.py", line 25, in
instance.start()
File "D:\game\JGM\qingwei\automator.py", line 44, in start
self.check_task()
File "D:\game\JGM\qingwei\automator.py", line 168, in check_task
if UIMatcher.findTaskBubble(screen):
File "D:\game\JGM\qingwei\cv.py", line 70, in findTaskBubble
if len(cnts[1]):
TypeError: object of type 'NoneType' has no len()

扫货过程中,报异常退出,遇到两次了,先记录

Traceback (most recent call last):
File "main.py", line 27, in
instance.start()
File "D:\Simple-JiaGuoMeng-Agent-master-saohuo\automator.py", line 47, in start
self.check_goods()
File "D:\Simple-JiaGuoMeng-Agent-master-saohuo\automator.py", line 167, in check_goods
self.harvest(self.harvest_filter, good_id)
File "D:\Simple-JiaGuoMeng-Agent-master-saohuo\automator.py", line 85, in harvest
pos_id = self.guess_good(good)
File "D:\Simple-JiaGuoMeng-Agent-master-saohuo\automator.py", line 97, in guess_good
diff_screens = self.get_screenshot_while_touching(GOODS_POSITIONS[good_id])
File "D:\Simple-JiaGuoMeng-Agent-master-saohuo\automator.py", line 104, in get_screenshot_while_touching
screen_before = self.d.screenshot(format="opencv")
File "C:\Users\binqi.zhang\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2_init_.py", line 1175, in screenshot
return self.session().screenshot(*args, **kwargs)
File "<C:\Users\binqi.zhang\AppData\Local\Programs\Python\Python37-32\lib\site-packages\decorator.py:decorator-gen-6>", line 2, in screenshot
File "C:\Users\binqi.zhang\AppData\Local\Programs\Python\Python37-32\lib\site-packages\retry\api.py", line 74, in retry_decorator
logger)
File "C:\Users\binqi.zhang\AppData\Local\Programs\Python\Python37-32\lib\site-packages\retry\api.py", line 33, in _retry_internal
return f()
File "C:\Users\binqi.zhang\AppData\Local\Programs\Python\Python37-32\lib\site-packages\uiautomator2\session.py", line 482, in screenshot
return cv2.imdecode(nparr, cv2.IMREAD_COLOR)
cv2.error: OpenCV(3.4.7) C:\projects\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp:751: error: (-215:Assertion failed) !buf.empty() in function 'cv::imdecode
'

执行screenshot的时候opencv报错

Traceback (most recent call last):
File "main.py", line 33, in
instance.start()
File "/Users/y.dongdong/Downloads/DongHub/JGM-Automator/automator.py", line 44, in start
self._match_target(target)
File "/Users/y.dongdong/Downloads/DongHub/JGM-Automator/automator.py", line 116, in _match_target
screen = self.d.screenshot(format="opencv")
File "/anaconda3/lib/python3.7/site-packages/uiautomator2/init.py", line 1186, in screenshot
return self.session().screenshot(*args, **kwargs)
File "</anaconda3/lib/python3.7/site-packages/decorator.py:decorator-gen-6>", line 2, in screenshot
File "/anaconda3/lib/python3.7/site-packages/retry/api.py", line 74, in retry_decorator
logger)
File "/anaconda3/lib/python3.7/site-packages/retry/api.py", line 33, in __retry_internal
return f()
File "/anaconda3/lib/python3.7/site-packages/uiautomator2/session.py", line 469, in screenshot
r = requests.get(self.server.screenshot_uri, timeout=10)
File "/anaconda3/lib/python3.7/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/anaconda3/lib/python3.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/anaconda3/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/anaconda3/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/anaconda3/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/anaconda3/lib/python3.7/http/client.py", line 1321, in getresponse
response.begin()
File "/anaconda3/lib/python3.7/http/client.py", line 296, in begin
version, status, reason = self._read_status()
File "/anaconda3/lib/python3.7/http/client.py", line 257, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/anaconda3/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)

我尝试了下增加import cv2,发现不是这个问题,所以行号可能跟源文件差1行,想问下你的版本号可以发一下不?

python -m uiautomator2 init之后出错

atx软件可以安装但是报错
[D 191105 22:12:39 init:109] Initial device AdbDevice(serial=127.0.0.1:7555)
[I 191105 22:12:39 init:277] Install minicap, minitouch
[D 191105 22:12:39 init:48] Use cached assets: C:\Users\User.uiautomator2\383030fa57087cbc4edca315ef01dac9fe671d3304263fb5f6016c6c\minitouch
[D 191105 22:12:39 init:186] Push to /data/local/tmp/minitouch:0755
[I 191105 22:12:39 init:281] abi:x86 seems to be android emulator, skip install minicap
[D 191105 22:12:39 init:48] Use cached assets: C:\Users\User.uiautomator2\6edef50a02af79ddf2217874d1ce621d4a847d6762dc86c10d5811a0\bundle.jar
[D 191105 22:12:39 init:186] Push to /data/local/tmp/bundle.jar:0644
[D 191105 22:12:40 init:48] Use cached assets: C:\Users\User.uiautomator2\42a21461fa2b0031646c206175ef315ae8a142421a7675e219336bca\uiautomator-stub.jar
[D 191105 22:12:40 init:186] Push to /data/local/tmp/uiautomator-stub.jar:0644
[I 191105 22:12:40 init:295] Already installed com.github.uiautomator apks
[D 191105 22:12:40 init:214] Real version: [0, 7, 4], Expect version: [0, 7, 4]
[I 191105 22:12:40 init:300] Check install
[D 191105 22:12:40 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:40 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:41 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:41 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:42 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:42 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:43 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:43 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:44 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
[D 191105 22:12:44 init:310] Forward: local:tcp:12388 -> remote:tcp:7912
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen
chunked=chunked,
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1336, in getresponse
response.begin()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 306, in begin
version, status, reason = self._read_status()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 720, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\packages\six.py", line 734, in reraise
raise value.with_traceback(tb)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 672, in urlopen
chunked=chunked,
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 1336, in getresponse
response.begin()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 306, in begin
version, status, reason = self._read_status()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\http\client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\socket.py", line 589, in readinto
return self._sock.recv_into(b)
urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接 。', None, 10054, None))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 193, in run_module_as_main
"main", mod_spec)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\runpy.py", line 85, in run_code
exec(code, run_globals)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2_main
.py", line 229, in
main()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2_main
.py", line 219, in main
actionsargs.subparser
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2_main_.py", line 34, in cmd_init
init.install(args.server)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2\init.py", line 301, in install
self.check_atx_agent_version()
File "<C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\decorator.py:decorator-gen-4>", line 2, in check_atx_agent_version
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\retry\api.py", line 74, in retry_decorator
logger)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\retry\api.py", line 33, in __retry_internal
return f()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\uiautomator2\init.py", line 311, in check_atx_agent_version
version = requests.get("http://127.0.0.1:%d/version" % port).text.strip()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None))

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.