Appium问题解答

作者: 顾顾314 | 来源:发表于2017-09-01 11:07 被阅读221次

    这里所列的都是我个人在使用Appium遇到的问题,在此记录希望可以帮到一些朋友。
    Appium环境配置成功长这样:

    Appium环境配置成功.png

    未配置成功的各有各的问题


    问题一、: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的错误

    屏幕快照 2017-09-18 上午9.38.22.png

    这个错误很常见,出现在用真机的时候,原因就是真机上没有安装WDA,只要把WDA装到真机上就可以解决报错。


    问题九、未安装ios-deploy的错误

    屏幕快照 2017-09-18 上午9.36.10.png

    解决这个问题很简单,就按照截图中的报错提示:利用npm安装ios-deploy就好了。
    npm install -g ios-deploy


    问题十、permission to start activity denied appium

    屏幕快照 2017-09-18 下午2.09.32.png
    这是在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


    补充一个iPhone真机的Desired Capabilities截图,希望能够帮助有需要的朋友:

    真机Desired Capabilities.png

    相关文章

      网友评论

      本文标题:Appium问题解答

      本文链接:https://www.haomeiwen.com/subject/ujuhjxtx.html