Airtest
Airtest copied to clipboard
Airtest在linux上面执行提示http里面提示json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),执行失败
(请尽量按照下面提示内容填写,有助于我们快速定位和解决问题,感谢配合。否则直接关闭。)
(重要!问题分类)
- 测试开发环境AirtestIDE使用问题 -> https://github.com/AirtestProject/AirtestIDE/issues
- 控件识别、树状结构、poco库报错 -> https://github.com/AirtestProject/Poco/issues
- 图像识别、设备控制相关问题 -> 按下面的步骤
描述问题bug
(简洁清晰得概括一下遇到的问题是什么。或者是报错的traceback信息。)
脚本 在Windows上面执行是成功的,放到Linux里面通过airtest run "hc_login.air" --device android://127.0.0.1:5037/882QADT8EJEA5 --log "/usr/local/test"命令执行就报错了,共有三个错误,具体下面的报错信息和截图,自动化脚本里面主要是poco点击相关的操作,部分如图:
[01:51:19][DEBUG]<airtest.core.android.adb> /usr/local/lib/python3.5/dist-packages/airtest/core/android/static/adb/linux/adb -P 5037 -s 882QADT8EJEA5 shell am instrument -w -e debug false -e class com.netease.open.pocoservice.InstrumentedTestAsLauncher com.netease.open.pocoservice.test/android.support.test.runner.AndroidJUnitRunner
======================================================================
ERROR: runTest (airtest.cli.runner.AirtestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/hrpc/transport/http.py", line 24, in send
self.rpc_client.put_response(r.json())
File "/usr/local/lib/python3.5/dist-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3.5/json/__init__.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 26, in <module>
poco("com.android.packageinstaller:id/permission_allow_button").click()
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 23, in wrapped
return func(proxy, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 332, in click
pos_in_percentage = self.get_position(focus)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 72, in wrapped
return func(proxy, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 613, in get_position
pos = self.attr('pos')
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 39, in wrapped
return func(self, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 734, in attr
nodes = self._do_query(multiple=False)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 872, in _do_query
self._nodes = self.poco.agent.hierarchy.select(self.query, multiple)
File "/usr/local/lib/python3.5/dist-packages/poco/utils/retry.py", line 20, in wrapped
raise ex
File "/usr/local/lib/python3.5/dist-packages/poco/utils/retry.py", line 15, in wrapped
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/utils/hrpc/hierarchy.py", line 33, in select
return self.selector.select(query, multiple)
File "/usr/local/lib/python3.5/dist-packages/hrpc/object_proxy.py", line 92, in __call__
return self._client__.evaluate(self.__call_no_evaluate__(remote_obj_cache, *args))
File "/usr/local/lib/python3.5/dist-packages/hrpc/client.py", line 63, in evaluate
self.transport.send({'id': reqid, 'uri': obj_proxy._uri__, 'method': obj_proxy._invocation_path__})
File "/usr/local/lib/python3.5/dist-packages/hrpc/transport/http.py", line 26, in send
raise TransportDisconnected(e)
hrpc.exceptions.TransportDisconnected: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 28, in <module>
print("\u6743\u9650\u5f39\u7a97\u5df2\u6d88\u5931")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/airtest/cli/runner.py", line 65, in runTest
six.reraise(*sys.exc_info())
File "/usr/local/lib/python3.5/dist-packages/six.py", line 693, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/airtest/cli/runner.py", line 61, in runTest
exec(compile(code.encode("utf-8"), pyfilepath, 'exec'), self.scope)
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 45, in <module>
print("\u767b\u5f55\u5931\u8d25\u4e86")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
----------------------------------------------------------------------
Ran 1 test in 12.465s
FAILED (errors=1)
相关截图
(贴出遇到问题时的截图内容,如果有的话)
(在AirtestIDE里产生的图像和设备相关的问题,请贴一些AirtestIDE控制台黑窗口相关报错信息)
复现步骤
- Go to '...'
- Click on '....'
- Scroll down to '....'
- See error
预期效果 (预期想要得到什么、见到什么) airtest在Linux里面能够成功执行
python 版本: python3.5
airtest 版本:
airtest版本通过
pip freeze
可以命令可以查到 airtest==1.0.26 pocoui==1.0.76 设备:
- 型号: [e.g. google pixel 2]
- 系统: [e.g. Android 8.1]
- (别的信息) Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-34-generic x86_64) 其他相关环境信息 (其他运行环境,例如在linux ubuntu16.04上运行异常,在windows上正常。)
去掉中文的print语句再重试看看,可能只是单纯的编码问题
我去掉了所有的print和其他语句,只有poco的点击相关操作还是会报错,Python3.5报错如下
Python2.7报错如下:
Linux上面执行Windows里面写好的脚本是可以的吗?前面的安装卸载都是执行的,到了POCO点击就不执行了,这是为什么呢?
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
ST.OPDELAY=2
try:
uninstall("xxxx")
except:
print("no need uninstall")
install("xxxx.apk")
start_app("xxxx")
sleep(3)
try:
poco("com.android.packageinstaller:id/permission_allow_button").click()
你的mac上是不是配了什么防火墙策略?因为adb server/adb forward返回了一个空字符串响应
是Linux电脑,怎么查看有没有防火墙策略?
我查看了我们的Ubuntu 16.04系统没有安装iptables防火墙,请问一下确定这个返回空字符串是因为防火墙的原因吗?这个不需要我去安装这个防火墙吧?
我在执行 airtest脚本的时候看了一下adb forward --list是能够返回字符串的,但是最后还是会在执行 poco("com.android.packageinstaller:id/permission_allow_button").click()点击的时候报上面的错误
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/hrpc/transport/http.py", line 24, in send
self.rpc_client.put_response(r.json())
File "/usr/local/lib/python3.5/dist-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/usr/lib/python3.5/json/init.py", line 319, in loads
return _default_decoder.decode(s)
File "/usr/lib/python3.5/json/decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 33, in
poco("com.android.packageinstaller:id/permission_allow_button").click()
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 23, in wrapped
return func(proxy, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 332, in click
pos_in_percentage = self.get_position(focus)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 72, in wrapped
return func(proxy, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 613, in get_position
pos = self.attr('pos')
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 39, in wrapped
return func(self, *args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 734, in attr
nodes = self.do_query(multiple=False)
File "/usr/local/lib/python3.5/dist-packages/poco/proxy.py", line 872, in do_query
self.nodes = self.poco.agent.hierarchy.select(self.query, multiple)
File "/usr/local/lib/python3.5/dist-packages/poco/utils/retry.py", line 20, in wrapped
raise ex
File "/usr/local/lib/python3.5/dist-packages/poco/utils/retry.py", line 15, in wrapped
return func(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/poco/utils/hrpc/hierarchy.py", line 33, in select
return self.selector.select(query, multiple)
File "/usr/local/lib/python3.5/dist-packages/hrpc/object_proxy.py", line 92, in call
return self.client.evaluate(self.call_no_evaluate(remote_obj_cache, *args))
File "/usr/local/lib/python3.5/dist-packages/hrpc/client.py", line 63, in evaluate
self.transport.send({'id': reqid, 'uri': obj_proxy.uri, 'method': obj_proxy.invocation_path})
File "/usr/local/lib/python3.5/dist-packages/hrpc/transport/http.py", line 26, in send
raise TransportDisconnected(e)
hrpc.exceptions.TransportDisconnected: Expecting value: line 1 column 1 (char 0)
ERROR: runTest (airtest.cli.runner.AirtestCase)
Traceback (most recent call last): File "/usr/local/lib/python3.5/dist-packages/hrpc/transport/http.py", line 24, in send self.rpc_client.put_response(r.json()) File "/usr/local/lib/python3.5/dist-packages/requests/models.py", line 897, in json return complexjson.loads(self.text, **kwargs) File "/usr/lib/python3.5/json/init.py", line 319, in loads return _default_decoder.decode(s) File "/usr/lib/python3.5/json/decoder.py", line 339, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) File "/usr/lib/python3.5/json/decoder.py", line 357, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 33, in
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/airtest/cli/runner.py", line 65, in runTest
six.reraise(*sys.exc_info())
File "/usr/local/lib/python3.5/dist-packages/six.py", line 693, in reraise
raise value
File "/usr/local/lib/python3.5/dist-packages/airtest/cli/runner.py", line 61, in runTest
exec(compile(code.encode("utf-8"), pyfilepath, 'exec'), self.scope)
File "/usr/local/hikvision/monitor_phones/airtest_case/hc_login.air/hc_login.py", line 50, in
Windows 10 也遇到同样的Expecting value: line 1 column 1 (char 0)
, 后来发现跟配置了http_proxy环境变量有关
这个问题后来怎么样了?解决了吗?我现在也遇到了同样的问题 @adolli @jeniva
poco is shit! the doc of an authority website is not found! ! for pure android suggest to https://github.com/xiaocong/uiautomator
我也遇到了此问题