解决:SyntaxError: Non-ASCII character in file
今天尝试用monkeyrunner脚本在夜神模拟器上安装并截图QQ,但是遇到了一些问题:
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#连接模拟器
device = MonkeyRunner.waitForConnection()
#打开锁屏
device.drag((355,1061),(621,1061),3,1)
#安装QQ
device.installPackage("F:\\QQ_730.apk")
MonkeyRunner.sleep(8)
#启动QQ
device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
MonkeyRunner.sleep(5)
#点击登录
device.touch(180,1170,"DOWN_AND_UP")
MonkeyRunner.sleep(3)
#保存截图
result = device.takeSnapshot()
result.writeToFile("qq.png","png")
无奈刚开始就报错了。

"SyntaxError: Non-ASCII character in file 'C:\Users\Administrator\qq.py'
这是一个语法错误,原因可能是我们脚本的注释用的是中文。我们可以在脚本开始加上#-*-coding:utf-8-*-
#-*-coding:utf-8-*-
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#连接模拟器
device = MonkeyRunner.waitForConnection()
#打开锁屏
device.drag((355,1061),(621,1061),3,1)
#安装QQ
device.installPackage("F:\\QQ_730.apk")
MonkeyRunner.sleep(8)
#启动QQ
device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
MonkeyRunner.sleep(5)
#点击登录
device.touch(180,1170,"DOWN_AND_UP")
MonkeyRunner.sleep(3)
#保存截图
result = device.takeSnapshot()
result.writeToFile("qq.png","png")
可是,又报错了:

再次尝试:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#连接模拟器
device = MonkeyRunner.waitForConnection()
#打开锁屏
device.drag((355,1061),(621,1061),3,1)
#安装QQ
device.installPackage("F:\\QQ_730.apk")
MonkeyRunner.sleep(8)
#启动QQ
device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity")
MonkeyRunner.sleep(5)
#点击登录
device.touch(180,1170,"DOWN_AND_UP")
MonkeyRunner.sleep(3)
#保存图片
result = device.takeSnapshot()
result.writeToFile("qq.png","png")
值得注意的两点是:
1. 检查夜神模拟器有没有连上:adb devices
如果没有连上,用adb connect 127.0.0.1:62001连接,再用adb devices检查。(详见lynnLi的博客monkeyrunner之夜神模拟器的安装与使用(二))
2. 一定要用好MonkeyRunner.sleep()
在实际的测试过程中,有的时候发现脚本业务逻辑是正确的,可是不知道为什么一旦执行起来结果却是错误的,那么有一种可能就是你的操作过快,导致界面元素没有完全展示出来就开始了后续操作,从而引起的问题。(引自《精通移动App测试实战:技术、工具和案例》,于涌 王磊 曹向志编著)
====================================9月26日更新======================================
不知是Eclipse出错概率多,还是我的python脚本问题,今天写了一段python脚本,在Elipse中运行也出现了相同的错误,解决的办法却不一样:
''' Created on 2017-9-26 @author: Administrator ''' from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice #连接设备 device = MonkeyRunner.waitForConnection() MonkeyRunner.sleep(5) #启动QQ device.startActivity(component="com.tencent.mobileqq/.activity.SplashActivity") MonkeyRunner.sleep(5) #点击动态 device.touch(596, 1112, "DOWN_AND_UP") MonkeyRunner.sleep(3) #点击好友动态 device.touch(119, 296, "DOWN_AND_UP") MonkeyRunner.sleep(5) #向下滑 device.drag((288, 189), (288, 947), 1, 10) MonkeyRunner.sleep(3) #向上滑 device.drag((288, 947), (288, 189), 1, 10) MonkeyRunner.sleep(3) #回到桌面 device.touch(414, 738, "DOWN-AND_UP") MonkeyRunner.sleep(3)
出现报错:
170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]SyntaxError: Non-ASCII character in file 'D:\Program\workspace\monkeyrunner_test01\test02.py', but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.Py.SyntaxError(Py.java:166) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.fixParseError(ParserFacade.java:102) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.parse(ParserFacade.java:184) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.Py.compile_flags(Py.java:1731) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.__builtin__.execfile_flags(__builtin__.java:514) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:225) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77) 170926 23:53:26.465:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189)
方法一:如果我加上
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
报错:
170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]SyntaxError: Non-ASCII character in file 'D:\Program\workspace\monkeyrunner_test01\test02.py', but no encoding declared; see http://www.python.org/peps/pep-0263.html for details 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.Py.SyntaxError(Py.java:166) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.fixParseError(ParserFacade.java:102) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.parse(ParserFacade.java:184) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.Py.compile_flags(Py.java:1731) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.__builtin__.execfile_flags(__builtin__.java:514) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:225) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77) 170926 23:56:37.058:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189)
方法二:如果我加上:
#-*-coding:utf-8-*-
依旧报错:
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] Script terminated due to an exception
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions]SyntaxError: ('Unknown encoding: utf-8-', ('D:\\Program\\workspace\\monkeyrunner_test01\\test02.py', 1, 0, ''))
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.prepBufReader(ParserFacade.java:336)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.prepBufReader(ParserFacade.java:286)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.ParserFacade.parse(ParserFacade.java:181)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.Py.compile_flags(Py.java:1731)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.core.__builtin__.execfile_flags(__builtin__.java:514)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:225)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.ScriptRunner.run(ScriptRunner.java:116)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.run(MonkeyRunnerStarter.java:77)
170926 23:58:09.631:S [main] [com.android.monkeyrunner.MonkeyRunnerOptions] at com.android.monkeyrunner.MonkeyRunnerStarter.main(MonkeyRunnerStarter.java:189)
方法三:如果我加上
#coding:utf-8
反而能够正常跑下去而不报错。其中原因,待我分析之后附上。
解决:SyntaxError: Non-ASCII character in file的更多相关文章
- SyntaxError: Non-ASCII character 'æ' in file csdn.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
错误信息: SyntaxError: Non-ASCII character , but no encoding declared; see http://python.org/dev/peps/pe ...
- 怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file
怎么解决syntaxerror:non-utf-8 code starting with \xc4'in file 首行增加,已测试可用. # coding=gbk 程序中出现中文,运行的时候 ...
- 创建文件夹并解决解决unicode和ASCII码转换的问题
# -*- coding: UTF-8 -*-import sysimport timeimport os #解决unicode和ASCII码转换的问题reload(sys) #解决unicode和A ...
- atitit.解决SyntaxError: missing ] after element list"不个object 挡成个str eval ....
atitit.解决SyntaxError: missing ] after element list"不个object 挡成个str eval .... 1. 原因::: 不个object ...
- 解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
解决java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 当项目依赖其他jar ...
- python解决SyntaxError: Non-ASCII character '\xe6'
出现情况,输入如下一个函数demo: run,报错: SyntaxError: Non-ASCII character '\xe6' in file /Users/XX/PycharmProjects ...
- 解决:"UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position"错误
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/Haiyang_Duan/article/ ...
- Python读文件报错:SyntaxError: Non-ASCII character in file
打开city.py文件时报错 问题原因: 程序中的编码错误,python默认是acii模式,没有支持utf8.如果代码中有汉字 ,就会报错 解决方案: 源代码文件(city.py)第一行添加:#cod ...
- 【Python】【解决】UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 1: ordinal not in range(128)
1.问题描述 今天在升级Ubuntu到14.04,使用命令行启动软件更新器,进行版本升级,结果开始升级就异常退出了,具体打印如下: $update-manager -d 正在检查新版 Ubuntu 使 ...
随机推荐
- Android系统移植与调试之------->Amlogic方案编译步骤
1. 拷贝Amlogic的SourceCode 切换目录到 /home/roco/work/amlogic/SourceCode/mx0831-0525下将mx0831-0525.tgz拷贝到 / ...
- 剑指offer 面试68题
面试68题: 题目:求树中两个节点的最低公共祖先 待解决...
- python的PIL模块安装
一.Centos安装PIL #尤其重要,否则会报错 yum install python-devel yum install libjpeg libjpeg-devel zlib zlib-devel ...
- SM3算法
/* * sm3.h * * 为使此算法兼容32位.64位下Linux或Windows系统, * 选择 int 来表示 32 位整数. * 消息长度最大限定为 2**32 - 1(单位:比特), * ...
- uart测试代码
#include <stdio.h> /*标准输入输出定义*/ #include <stdlib.h> /*标准函数库定义*/ #include <unistd.h> ...
- GPU的工作原理
转:https://blog.csdn.net/p23onzq/article/details/79609629 在GPU出现以前,显卡和CPU的关系有点像“主仆”,简单地说这时的显卡就是画笔,根据各 ...
- linux环境vim升级到vim74
作为编辑器之神,vim7.4已经发布近两个月了.从vim7.3到vim7.4,时隔两年之久,做了多项改正和性能提升,作为Linux Geeksters的你,怎能错过. 由于各大主流linux操作系统都 ...
- R语言的输出函数cat,sink,writeLines,write.table
根据输出的方向分为输出到屏幕和输出到文件. 1.cat函数即能输出到屏幕,也能输出到文件. 使用方式:cat(... , file = "", sep = " " ...
- PHP的垃圾回收机制以及大概实现
垃圾回收,简称gc.顾名思义,就是废物重利用的意思.再说这个之前先接触一下内存泄露,大概意思就是申请了一块地儿拉了会儿屎,拉完之后不收拾,那么这块地就算糟蹋了,地越用越少,最后一地全是屎.说到底一句, ...
- linux下安装casperjs 开发运行环境
casperjs是一个基于phantomjs的测试框架,使用python进行操作,所以一个完整的casperjs环境需要安装phantomjs和python. 1 phantomjs安装 到官网下载最 ...