Airtest icon indicating copy to clipboard operation
Airtest copied to clipboard

Airtest在linux上面执行提示http里面提示json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0),执行失败

Open jeniva opened this issue 5 years ago • 12 comments

(请尽量按照下面提示内容填写,有助于我们快速定位和解决问题,感谢配合。否则直接关闭。)

(重要!问题分类)

  • 测试开发环境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点击相关的操作,部分如图: image

[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控制台黑窗口相关报错信息) image

复现步骤

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. 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上正常。)

jeniva avatar May 10 '19 02:05 jeniva

去掉中文的print语句再重试看看,可能只是单纯的编码问题

yimelia avatar May 10 '19 02:05 yimelia

我去掉了所有的print和其他语句,只有poco的点击相关操作还是会报错,Python3.5报错如下 image Python2.7报错如下:

image

jeniva avatar May 10 '19 03:05 jeniva

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()

jeniva avatar May 10 '19 06:05 jeniva

你的mac上是不是配了什么防火墙策略?因为adb server/adb forward返回了一个空字符串响应

adolli avatar May 10 '19 06:05 adolli

是Linux电脑,怎么查看有没有防火墙策略?

jeniva avatar May 10 '19 06:05 jeniva

Ubuntu 16.04系统配置iptables防火墙加强系统安全 https://www.centos.bz/2017/07/ubuntu-16-04-iptables/

请试着参考上面网文

yuzhujiutian avatar May 10 '19 13:05 yuzhujiutian

image 我查看了我们的Ubuntu 16.04系统没有安装iptables防火墙,请问一下确定这个返回空字符串是因为防火墙的原因吗?这个不需要我去安装这个防火墙吧?

jeniva avatar May 13 '19 01:05 jeniva

image 我在执行 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 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/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 print("login in fail"+ traceback.print_exc()) TypeError: Can't convert 'NoneType' object to str implicitly

jeniva avatar May 13 '19 01:05 jeniva

Windows 10 也遇到同样的Expecting value: line 1 column 1 (char 0), 后来发现跟配置了http_proxy环境变量有关

douniwan5788 avatar Mar 10 '21 09:03 douniwan5788

这个问题后来怎么样了?解决了吗?我现在也遇到了同样的问题 @adolli @jeniva

jxllh123456 avatar Jun 16 '21 09:06 jxllh123456

poco is shit! the doc of an authority website is not found! ! for pure android suggest to https://github.com/xiaocong/uiautomator

jxllh123456 avatar Jun 17 '21 01:06 jxllh123456

我也遇到了此问题

ivoidcat avatar Sep 14 '21 06:09 ivoidcat