appium+python自动化测试~~~~~~~问题记录

先不说安装,先说安装遇到的问题

1,问题描述:

先是安装了原来常用的appium-server,该版更新止步于1.4.16版,已经两年多未更新,并且发现不支持更高版本的安卓API,仅支持到API23 ---- android 6.0,测试安卓7.0真机时,发现问题,必须要改用新的appium-desktop.

卸载appium服务器,安装好appium桌面。

进行环境安装验证,看是否安装成功,

cmd输入appium-doctor,提示,该命令不是内部或外部命令

         解决:查阅官方资料获知,在安装appium-desktop后,需要安装appium-doctor才可使用该命令,

          安装,输入npm install -g appium-doctor

        再次验证 appium-doctor (后面可跟 --ios 或 --android 查询不同安装环境,仅有一种环境可不必输入)

appium+python自动化测试~~~~~~~问题记录_第1张图片

问题解决,记录该问题。20180527 上午11点

2,使用uiautomator viewer 连接设备时报错

Error while obtaining UI hierarchy XML file:com.android.ddmlib.SyncException:Remote object doesn't exist!

cmd命令行,输入adb root;关闭uiautomator viewer,重新再打开,问题解决--20180528

3,报错信息:Error: could not open `D:\Java\jre1.8.0_144\lib\i386\jvm.cfg'

网上提到需要删除

 

  • c:/windows/system32/java.exe
  • c:/windows/system32/javaw.exe
  • c:/windows/system32/javaws.exe

但是我因为之前系统重装原来的java环境已经不存在,这次是重新安装,后来发现这个解决办法很完美的解决了这个问题:

把Path里面的%JAVA_HOME%/bin放在最前面,即可

4,运行aapt命令,提示不是内部命令

appium+python自动化测试~~~~~~~问题记录_第2张图片

将D:\Android\android-sdk\build-tools\27.0.3\aapt.exe,添加进path下,即可

5,cmd命令,输入adb devices,提示:adb server version (31) doesn't match this client(39)

拔掉手机重新再连接一次,问题解决

6,pycharm 运行脚本,报错 ImportError: No module named functools

问题是安装多版本python造成,卸载后即可

7,先python2又安装了python3,然后安装了pip,卸载了python3后pip不可用,提示:

Fatal error in launcher: Unable to create process using '"'

解决:命令 python3 -m pip install -U pip 进行pip升级

python3 -m pip install --upgrade pip --force-reinstall

python2 -m pip install --upgrade pip --force-reinstall

如果上面失败执行下面命令更新

python3 -m pip install --user --upgrade pip

1,使用python -m pip install --upgrade pip升级失败
2,使用python -m pip install -U --force-reinstall pip依然失败
3,使用pip install --user --upgrade pip成功升级

pip install selenium==3.141.0

8.adb连接夜神模拟器连不上,

解决:将夜神bin目录下的adb.exe、等三个文件,替换为安卓sdk下D:\Android\android-sdk\platform-tools下的adb.exe三个文件,即可。

    还有,注意Android_SDK升级后,adb版本升级导致两者版本不一致问题,需要及时替换。

appium+python自动化测试~~~~~~~问题记录_第3张图片

9,win7系统,夜神模拟器打开时,会出现程序运行异常的情况,使用管理员身份运行即可

10,使用夜神模拟器时,需要设置足够的等待时间,否则容易导致系统运行报错,提示:WebDriverException: Message: An unknown server-side error occurred while processing the command

 

        20180623

11,UIautomatorviewer,连接夜神模拟器,此时开启有appium-inspector,

提示:Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException: Remote object doesn't exist!

解决办法:

UI automator viewer 和appium-inspector不能同时连接模拟器或手机,他们中一个工具连接上模拟器后,该模拟器将被占用,另外一个元素定位工具将无法连接该模拟器,除非释放掉才能被定位工具占用。

12,滑动操作失败问题。模拟滑动操作总是失败,日志提示是正确的。

原因在于定义的滑动坐标是错误的,务必仔细分析实际滑动动作后再定义坐标。

13,pycharm 安装第三方库报错:AttributeError: 'module' object has no attribute 'main'

 原因:pip升级到 10.0.1 之后 老版的pycharm 使用pip安装第三方库的时候会报错,

在D:\python3.6\PyCharm Community Edition 2017.3.3\helpers\packaging_tool.py

对代码作如下操作:

'''  201806230942 注释掉这两段
def do_install(pkgs):
    try:
        import pip
    except ImportError:
        error_no_pip()
    return pip.main(['install'] + pkgs)

def do_uninstall(pkgs):
    try:
        import pip
    except ImportError:
        error_no_pip()
    return pip.main(['uninstall', '-y'] + pkgs)
'''
###201806230942 新增加一下两段代码
def do_install(pkgs):
    try:
        # import pip
        try:
            from pip._internal import main
        except Exception:
            from pip import main
    except ImportError:
        error_no_pip()
    return main(['install'] + pkgs)

def do_uninstall(pkgs):
    try:
        # import pip
        try:
            from pip._internal import main
        except Exception:
            from pip import main
    except ImportError:
        error_no_pip()
    return main(['uninstall', '-y'] + pkgs)

######

保存修改后便可在pycharm导入第三方库。

14,find_element_by_name,该种元素定位方式已被弃用,appium版本在1.5以后就不再支持ByName的定位,

建议改用xpath定位,更简洁,见语法描述。

appium+python自动化测试~~~~~~~问题记录_第4张图片

1.使用绝对路径定位,如截图所显示的 xpath 路径
MobileBy.xpath("className/className/className/className")
2.使用相对路径定位
MobileBy.xpath("//className")
3.通过元素的索引定位
MobileBy.xpath("//className[index]")
4.通过元素的属性定位
一种属性:MobileBy.xpath("//className[@label='更多信息']")
两种属性:MobileBy.xpath("//className[@label='更多信息'][@isVisible='1']")
部分属性(最强大):MobileBy.xpath("//className[contains(@label,'更多')]")

15,短信验证码问题

       方法一,询问开发短信下发位置

        方法二,数据库查询

16,python连接mysql数据库,

    导入数据库 mysql-connect-python模块

17,查询mysql数据库版本,sql语句:select version();

18,读取跨目录读取文件正确写法:

file = open(r'../config/capability.yaml', 'r')
两个点..表示前一个目录;

一个点.表示当前目录;

19,app自动化测试项目,上传svn后,打开pycharm,继续编辑,提示:

appium+python自动化测试~~~~~~~问题记录_第5张图片

 

使用svn上传整个项目后,然后将svn目录的项目再导入到pycharm中,打开pycharm出现这样的报错

经过google后,发现问题是:安装的TortoiseSVN工具,本身是带有command-line功能的(我没有安装)

需要下载安装,地址:https://www.visualsvn.com/downloads/ 下载后解压安装,位置可自选,安装后,

appium+python自动化测试~~~~~~~问题记录_第6张图片

将D:\Subversion-command-line-1.10.0\bin\svn.exe,添加至:

appium+python自动化测试~~~~~~~问题记录_第7张图片

保存即ok,关闭编辑器,再重新打开,报错问题不再出现。

20,运行python脚本报错,点击下一步,弹出edit configration 窗口,

IllegalStateException:

@NotNull method com/intellij/openapi/util/IconLoader.getIcon must not return null百度未找到相关解决办法,重新查看编辑配置窗口,缺失Python解释器,从本地加载python3.exe程序即获得21,Android某个页面的activity如何获取?
 

21,pycharm导入logging后,打印日志运行一次后提示:

appium+python自动化测试~~~~~~~问题记录_第8张图片

安装第一个包失败,第二个包安装成功。

22,执行登陆脚本时,执行到升级弹窗页面定位“取消”元素时,多次定位取消按钮失败,会定位到确定按钮,【注意】:尽量使用ID定位更为准确

23,pycharm,runlog,日志中文显示乱码

appium+python自动化测试~~~~~~~问题记录_第9张图片

办法:编辑区---右键---file encoding----GBK,重新加载便可显示中文

24,TypeError: object of type 'WebElement' has no len();

    TypeError: Object of type 'WebDriver' is not JSON serializable

    以上两个均为语法错误,需要加强语法学习。

25,vivo x20 运行时报错:Original error: Injecting to another application requires INJECT_EVENTS permission

 

26,魅族手机,不会安装appium seting 和unlock包-----已查证可以如此

27,自动化测试做到一半,发现命令行启动appium服务失败,必须每次打开appiumGUI,而官方提供的命令:npm install -g appium 由于众所周知的原因,直接安装失败,在testhome找到解决办法:

npm --registry http://registry.cnpmjs.org install -g appium
使用npm的国内镜像可以安装,速度很不错。
以后不想输入ip的话可以输入以下命令:
npm config set registry http://registry.cnpmjs.org

然后就可以直接输入 npm install -g appium 安装了

使用上面的命令安装很快,但又有报错(win7 64 sp1):

MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装 .NET Framework 2.0 SDK;2) 安装 Microsoft Visual Studio 2005;或 3) 如果将该组件安装到了其他位置,请将其位置添加到系统路径中。 [C:\Users\Administrator\AppData\Roaming\npm\node_modules\appium\node_modules\heapdump\build\binding.sln]

这个不解决,后面的一堆报错:

appium+python自动化测试~~~~~~~问题记录_第10张图片

系统中查找这两个文件,发现根本没有,遂开始下载这两个文件:.NET Framework 2.0 SDK和Microsoft Visual Studio 2005,文件都很大,

 

28,vivo x20 运行时报错:Original error: 'Command 'D\:\\Android\\android-sdk\\platform-tools\\adb.exe -P 5037 -s 4aaa39c8 shell ime enable io.appium.android.ime/.UnicodeIME' exited with code 4294967177'; Stderr: ''; Code: '4294967177'

29,vivo pro5 和vivo x20运行时,虽然已经安装过Unlock和Appium Setting两个小工具,但每次运行总是提示安装,

 

30,卸载APP,启动脚本进行安装时,报错(Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity

    

 

31,androidmanifest.xml文件位置

 

32,app界面Toast元素捕捉

     1,安装appium-uiautomator2-driver

            npm install appium-uiautomator2-driver

            cnpm install appium-uiautomator2-driver

    2,安装selenium模块,pip show selenium

    以上两步是完整安装步骤,先不要删掉用户变量中的PATH关于npm的配置,否则运行上述命令会出错。

    按照以上步骤运行后报错(挑选):

    Proxying [GET /status] to [GET http://localhost:8200/wd/hub/status] with no body

adb -s M92QACQAXSYN3 shell am instrument -w io.appium.uiautomator2.server.test/android.support.test.runner.AndroidJUnitRunner

从testHome一篇文章的评论中,看到是uiautomator2的两个工具包未安装,server和server.test未安装,因为已经添加uiautomationName:Uiautomator2 参数,运行时本应自动安装,如果自动安装,建议手动安装,手动安装后,再次运行,反而手机提示这两个包再次安装,很奇怪!总之运行成功,没有报错

两安装包的位置:

C:\Users\Administrator\node_modules\[email protected]@appium-uiautomator2-server\apks

appium+python自动化测试~~~~~~~问题记录_第11张图片

进入文件夹>apks,看到:

appium+python自动化测试~~~~~~~问题记录_第12张图片

cmd命令行(1)先卸载,success表示卸载成功

appium+python自动化测试~~~~~~~问题记录_第13张图片

再安装,success表示安装成功

appium+python自动化测试~~~~~~~问题记录_第14张图片

如果待测应用已经被删除,建议以下两部操作:

1,cmd命令行再删除一次

2,再安装一次即可解决问题

 

33,安装NodeJS

 

    1、官网https://nodejs.org/en/download/下载NodeJS最新安装包,安装到任意目录,我本机安装在D:\Program     Files\nodejs,

    2、修改环境变量

    1)去掉用户变量PATH里的npm路径 C:\Users\Administrator\AppData\Roaming\npm
    2)系统变量PATH里增加 D:\Program Files\nodejs\

    3、npm配置

    在D:\Program Files\nodejs\ 目录新建node_cache和node_global文件夹(如果已存在就不需要创建了)
    npm config set prefix “D:\Program Files\nodejs\npm-global” # npm install -g xxx 的包都会装到这个目录
    npm config set cache “D:\Program Files\nodejs\npm-cache” # 缓存都会装到这个目录

    4、cnpm配置

    npm install -g cnpm –registry=https://registry.npm.taobao.org
    然后添加系统环境变量 D:\Program Files\nodejs\npm-global\

 

34,appium打印日志报错:Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]'. Manually uninstalling the application with package id 'io.appium.settings' may help. Expect some Appium features may not work as expected unless this problem is fixed

 

 

35,app页面元素定位,删除元素定位,使用层级定位,报错:

Caused by: javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: A location step was expected following the '/' or '//' token.

36,20180709今日在testhome上找到一篇文章,使用使用开源

37,pycharm编辑器,PEP8 line too long  >120

    解决:该问题,另起一行即可解决,编辑器限制了单行输入字符数为120个

 

38.日志配置

 

logging.basicConfig(level=logging.INFO, filename='../log/runlog.log',
                    format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s')

 

CON_LOG = '../config/log.conf'  # 配置文件路径
logging.config.fileConfig(CON_LOG)  # 加载配置文件
logging = logging.getLogger()

39,TypeError: 'in ' requires string as left operand, not WebElement

40,pip install jupter

41,测试报告模块导入,需要安装

42 SVN 问题:

appium+python自动化测试~~~~~~~问题记录_第15张图片

43,appium在线升级到指定版本

     appium -v 命令行查看appium版本;客户端也可查看appium版本

44,ResourceWarning: unclosed
  return self._request(command_info[0], url, body=data)

45,本次自动化测试演示问题

      1,测试数据需要参数化,使脚本更灵活,以适应不同测试数据;

      2,测试报告需要美化,

      3,元素无法捕捉到问题,

46,adb server version (31) doesn't match this client (40); killing...
could not read ok from ADB Server
* failed to start daemon
error: cannot connect to daemon    

之前一直用的好好的,今天启动adb命令直接报错,原因是,5037端口被占用,采用杀死

47,UI automator Viewer,进行设备截屏总是报错:Error taking device screenshot: EOF和com.android.ddmlib.TimeoutException。

关掉appium,重启电脑也不能解决。

解决办法:关掉UI automator Viewer,卸载app,重新安装app,重新打开UI automator Viewer;

网上提供办法adb root(没试过,先记录上)

48 ,windows下更新npm和nodejs

查看npm 版本: npm -v 
更新到最新版本: npm install npm@latest -g

https://blog.csdn.net/xn_28/article/details/79407423

49,安卓手机crash_log,手机端日志位置:

存储位置/Android/data/com.xxxx.xxxx.xxx/files/Crash_Log

50,pycharm控制台输出emoji表情符

报错信息如下,gbk编码不支持表情符

解决办法,修改编码格式为UTF-8

appium+python自动化测试~~~~~~~问题记录_第16张图片

再次打印成功

appium+python自动化测试~~~~~~~问题记录_第17张图片

51,log打印乱码,print打印不会乱码

appium+python自动化测试~~~~~~~问题记录_第18张图片

cmd命令启动appium

appium+python自动化测试~~~~~~~问题记录_第19张图片

jenkins分布式节点启动时报错

appium+python自动化测试~~~~~~~问题记录_第20张图片

java版本升级后,最后发现是VPN代理的问题,先禁用VPN,再启动节点,再开启VPN

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

手机adb命令安装apk包时,报错:Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]
该问题:开发者选项中,未勾选"允许USB安装应用"所致,直接勾选即可。

你可能感兴趣的:(appium+python)