解决:SyntaxError: Non-ASCII character in file

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决:SyntaxError: Non-ASCII character in file相关的知识,希望对你有一定的参考价值。

今天尝试用monkeyrunner脚本在夜神模拟器上安装并截图QQ,但是遇到了一些问题:

 1 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
 2 
 3 
 4 #连接模拟器
 5 device = MonkeyRunner.waitForConnection()
 6 
 7 #打开锁屏
 8 device.drag((355,1061),(621,1061),3,1)
 9 
10 #安装QQ
11 device.installPackage("F:\\\\QQ_730.apk")
12 MonkeyRunner.sleep(8)
13 
14 #启动QQ
15 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
16 MonkeyRunner.sleep(5)
17 
18 #点击登录
19 device.touch(180,1170,"DOWN_AND_UP")
20 MonkeyRunner.sleep(3)
21 
22 #保存截图
23 result = device.takeSnapshot()
24 result.writeToFile("qq.png","png")

无奈刚开始就报错了。

技术分享

"SyntaxError: Non-ASCII character in file ‘C:\\Users\\Administrator\\qq.py‘

这是一个语法错误,原因可能是我们脚本的注释用的是中文。我们可以在脚本开始加上#-*-coding:utf-8-*-

 1 #-*-coding:utf-8-*-
 2 
 3 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
 4 
 5 
 6 #连接模拟器
 7 device = MonkeyRunner.waitForConnection()
 8 
 9 #打开锁屏
10 device.drag((355,1061),(621,1061),3,1)
11 
12 #安装QQ
13 device.installPackage("F:\\\\QQ_730.apk")
14 MonkeyRunner.sleep(8)
15 
16 #启动QQ
17 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
18 MonkeyRunner.sleep(5)
19 
20 #点击登录
21 device.touch(180,1170,"DOWN_AND_UP")
22 MonkeyRunner.sleep(3)
23 
24 #保存截图
25 result = device.takeSnapshot()
26 result.writeToFile("qq.png","png")

可是,又报错了:

技术分享

再次尝试:

 1 import sys
 2 reload(sys)
 3 sys.setdefaultencoding("utf-8")
 4 
 5 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
 6 
 7 
 8 #连接模拟器
 9 device = MonkeyRunner.waitForConnection()
10 
11 #打开锁屏
12 device.drag((355,1061),(621,1061),3,1)
13 
14 #安装QQ
15 device.installPackage("F:\\\\QQ_730.apk")
16 MonkeyRunner.sleep(8)
17 
18 #启动QQ
19 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
20 MonkeyRunner.sleep(5)
21 
22 #点击登录
23 device.touch(180,1170,"DOWN_AND_UP")
24 MonkeyRunner.sleep(3)
25 
26 #保存图片
27 result = device.takeSnapshot()
28 result.writeToFile("qq.png","png")

值得注意的两点是:

1.  检查夜神模拟器有没有连上:adb devices

如果没有连上,用adb connect 127.0.0.1:62001连接,再用adb devices检查。(详见lynnLi的博客monkeyrunner之夜神模拟器的安装与使用(二)

2.  一定要用好MonkeyRunner.sleep()

在实际的测试过程中,有的时候发现脚本业务逻辑是正确的,可是不知道为什么一旦执行起来结果却是错误的,那么有一种可能就是你的操作过快,导致界面元素没有完全展示出来就开始了后续操作,从而引起的问题。(引自《精通移动App测试实战:技术、工具和案例》,于涌 王磊 曹向志编著)

以上是关于解决:SyntaxError: Non-ASCII character in file的主要内容,如果未能解决你的问题,请参考以下文章

解决:SyntaxError: Non-ASCII character in file

SyntaxError: Non-ASCII character ‘xe5’ in file 的解决办法

python编码错误的解决办法 SyntaxError: Non-ASCII character 'xe5' in file

Python报错:SyntaxError: Non-ASCII character 'xe5' in file的解决方法

[已解决]关于python无法显示中文的问题:SyntaxError: Non-ASCII character 'xe4' in file test.py on line 3, bu(

Python读文件报错:SyntaxError: Non-ASCII character in file