这里所列的都是我个人在使用Appium遇到的问题,在此记录希望可以帮到一些朋友。
Appium环境配置成功长这样:
未配置成功的各有各的问题
问题一、:WARN AppiumDoctor ✖ Bin directory for $JAVA_HOME is not set.
这个问题困扰了我两天,搜索各个网站无果,求助各个所谓的测试交流群(原来大家都是在里面胡聊)无人帮助回答,无奈翻墙至国外搜寻答案解决问题:
解决办法:You can try setting the .bash_profile as well and you can try to set JAVA_HOME variable like this :
export JAVA_HOME=$(/usr/libexec/java_home)
export PATH=${JAVA_HOME}/bin:$PATH
重启电脑即可。
if not,please try:
export PATH=$PATH:/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/bin
To verify that all of Appium's dependencies are met you can use appium-doctor
翻译:为了验证Appium的所有依赖项是否满足,您可以使用Appium - doctor
问题二、Message: Parameters were incorrect. We wanted {"required":["value"]} and you sent ["text","sessionId","id","value"]
在执行脚本的时候会报这样一个错误,这个问题是因为selenium版本过高,和1.6.5的Appium不兼容。需要把selenium版本降到3.3.1或者2.53.1就行了。
查看selenium版本方法:在终端进入到Python的命令行状态
>>>import selenium
>>>help(selenium)
输入以上两行命令就可查看当前selenium版本。
更换selenium版本方法:
pip3 uninstall selenium
pip3 install selenium==3.3.1 #注意,==两边没有空格
解释:这里使用pip3而不是pip,是因为我的电脑Xcode里有一个自带的2.7版本,而我又安装了一个3.6版本的。pip3是指卸载了我安装的Python3.6版本的Selenium,而我每次都会使用Python3.6,而不是系统自带的Python2.7.如果使用pip,则改变的是系统自带的selenium。
问题三:HTMLTestRunner.py文件本身报的几个错误
在使用Appium的时候往往我们需要生成直观的测试报告,这时候就需要使用到HTMLTestRunner.py文件(这是官网)。但是这个文件5年前就已经不更新了,那时候用的还是Python2,现在大多已经使用了Python3了,所以就导致了一些问题的产生。目前报错是5处,我们需要对官网提供的这个HTMLTestRunner.py文件做5处修改。网上也可以查到需要修改的地方,但是都不是很准确,这里我提供一个修改之后的,修改之处我都做了注释,可以看到修改前和修改后的区别。
问题四:TypeError: write() argument must be str, not bytes
这个问题我是在使用HTMLTestRunner的时候产生的,原因就是打开文件的方式错误造成的,造成的后果就是生成的测试报告是空的。在打开文件的时候开始的时候(就是没用HTMLTestRunner的时候,记住,是在自己写的执行脚本里,不是在HTMLTestRunner.py文件里)使用的是:open('HTMLReport.html', 'w') as f: 。这时候需要改成:open('HTMLReport.html', 'wb') as f:就可以了。(我也不太清楚原因是什么,网上有说文件打开的方式默认是二进制)
在这里我对Python的open函数做一个解释,如果有不对的地方欢迎指正,在此感谢.
open(路径+文件名,读写模式) #路径名为可选,默认是当前路径
解释读写模式:r(read)只读,r+读写,w(write)新建(会覆盖原有文件),a(append)追加,b(binary)二进制文件
常用模式如:'rb','wb','r+b'等等
读写模式的类型有:
rU或Ua 以读方式打开,同时提供通用换行符支持(PEP 278)
w 以写方式打开
a 以追加模式打开(从EOF开始,必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开(与a+的区别是该种方式会清空原有内容)
a+ 以读写模式打开(参见a)
ab 以二进制追加模式打开(参见a)
rb+ 以二进制读写模式打开(参见r+)
wb+ 以二进制读写模式打开(参见w+)
ab+ 以二进制读写模式打开(参见a+)
问题五:Could not connect to lockdownd. Exiting.
解决办法一,提高权限:
sudo chmod -R 777 /usr/local/lockdown/
解决办法二,比较麻烦但是解决较彻底:
brew uninstall ideviceinstaller
brew uninstall libimobiledevice
brew install --HEAD libimobiledevice
brew link --overwrite libimobiledevice
brew install ideviceinstaller
brew link --overwrite ideviceinstaller
问题六、 如何验证Appium环境已经配置成功
首先需要安装appium-doctor,然后再用appium-doctor验证
npm install -g appium-doctor
appium-doctor
问题七、Could not link: /usr/local/share/doc/homebrew
Please delete these paths and run brew update
.
这个问题其实严格来说并不是Appium的问题,只是在解决Appium问题的时候会用到Homebrew,在更新brew(brew update)的时候报了这样一个错,原因就是:
Because you have files there already that we don't overwrite automatically in case they are important.
解决办法就是把这个路径delete,然后再update,方法如下:
rm -rf /usr/local/share/doc/homebrew
这是一个非常可怕的命令行,真的很恐怖,简直就是数据终结者,我之所以会写这篇文章就是错误的使用了rm -rf
,导致电脑上的数据全部被清空,那种感觉是绝望的,不得已重新配置Appium环境。
问题八、Carthage was NOT found!
这个问题是在你检验Appium配置是否成功的时候出现,解决这个问题比较简单,安装这个Carthage就好了,方法:
brew update
brew install carthage
问题八、code65的错误
这个错误很常见,出现在用真机的时候,原因就是真机上没有安装WDA,只要把WDA装到真机上就可以解决报错。
问题九、未安装ios-deploy的错误
解决这个问题很简单,就按照截图中的报错提示:利用npm安装ios-deploy就好了。
npm install -g ios-deploy
问题十、permission to start activity denied appium
这是在Android真机时发生的错误,别再到处找解决方案了,赶快找Android开发人员吧。让他在项目里改一个属性重新给你打一个包,就是这属性限制了我们的测试:
exported = true
这个属性默认是false。
问题十一、ImportError: No module named appium
在运行脚本的时候报这样一个错误,原因是没有安装Appium Python Client,把这个安装上就好了:
pip3 install Appium-Python-Client
如果这条命令报错,请换:
pip3 install --user Appium-Python-Client
如果还报错,就只有最后这个大法了,加sudo,sudo虽好,能不用则不用:
sudo pip3 install --user Appium-Python-Client
问题十二、AttributeError: module 'appium.webdriver' has no attribute 'remote'
用了一段时间,同样的步骤,竟然会有这样的错误,当然了,脚本是录制的。这个原因是录制的脚本中remote应该写成大写开头Remote就可以了。
问题十三、 - Error occurred: ApplicationVerificationFailed
这个是当我们试图通过终端命令ideviceinstaller -i 包的路径
把App装到真机上的时候出现的,原因是我们的包是模拟器包,只能在模拟器上安装,需要让开发人员打一个真机包才能使用。
问题十四、命令行npm install -g appium 安装appium报错
明明是按照官网的教程来的,可是这一步就总是出错,是不是很着急?这里有一个巨坑,npm版本如果是最新(5.3.0)的则无法安装,会一直报错,所以需要给npm降低版本:
npm install npm@4 -g
如果这一步出错,那就需要先清除npm缓存:
npm cache clean
如果这一步也出错,那就试试:
npm cache verify
然后再降低版本
问题十五、各个测试环境的搭建
1、The XCUITest Driver(for iOS apps)
2、The UiAutomator2 Driver(for Android apps)
3、The Windows Driver(for Windows Desktop apps)
4、The Mac Driver(for Mac Desktop apps)
5、(BETA)The Espresso Driver(for Android apps)
该问题来自官网文档Getting Started
问题十六、怎么获取 Android 应用的 appPackage 和 appActivity
电脑连接手机,打开 App
adb logcat | grep Displayed
或
adb logcat | grep ActivityManager
该问题答案来自博客。
补充一个iPhone真机的Desired Capabilities截图,希望能够帮助有需要的朋友:
问题十七、could not connect to server are you sure it's running?
出现这个问题的原因是 Server 选择错了。选的Customer Server, 换Automatic Server。如图:
问题十八、An unknown server-side error occurred while processing the command. Original error: Could not install app: 'Command 'ios-deploy --id a1d83b4118076a91c432a49b123d7e40e7302332 --bundle /Users/guxuecheng/Desktop/sample-code/sample-code/apps/TestApp/build/Release-iphonesimulator/TestApp-iphonesimulator.app' exited with code 253'
报这个错的原因是因为测试用的安装包只能安装到模拟器上,如果试图安装到真机上就会报这个错误。
问题十九、执行 Python 脚本如何选择 Python 版本
这个问题一般出现在 Mac 上,因为系统自带 Python2,而我们往往会再安装一个 Python3.这样在执行脚本的时候总是会默认使用 Python2,有时会导致脚本无法通过。只需要在脚本的头部加一行代码就可以了:
# !/usr/bin/python3
。在实际使用当中会报如下错误:
Cannot run program "/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6" (in directory "/Users/guxuecheng/Desktop/sample-code/sample-code/examples/python"): error=2, No such file or directory。
如图:
问题二十、