• 0
  • 1
分享

我们在进行iOS Appium自动化测试的时候,会遇到环境配置、兼容使用问题,这里做个总结,以避免后续踩着这些坑。


问题1. 提示no module “appium”

解决:第1步,在终端输入命令:

cd /usr/local/bin
  pip3 install Appium-Python-Client

因为appium默认装在了python2上。

第2步,新建项目时要勾选。

Inherit global site-packages和Make available to all projects。


问题2. 获取udid的两种方法:

一种方法是iOS手机连接iTunes,查看摘要;另一种方法是打开Xcode,选择add simulator,可以查看到udid。


问题3. 提示AssertionError: Message: An unknown server-side error occurred while processing the command.Original error: Unknown device or simulator UDID: '***'

解决:brew install libimobiledevice –HEAD

如果在执行此命令时提示 /usr/local/share/man/man5 /usr/local/share/man/man7,则需要修改所有者权限,那么需要按如下命令操作:

sudo chown –R cy /usr/local/share/man/man5

sudo chown –R cy /usr/local/share/man/man7


问题4. 修改环境变量,把终端弄挂了;

解决:打开终端,选择Shell->新建命令,输入mkdir disabled_shell_files,运行命令;打开一个新的终端。重复刚才的步骤,然后在弹出的对话框里面输入mv .profile .bash_history .bash_profile .bashrc .inputrc disabled_shell_files,点击运行。再打开一个新的终端,你会看到终端恢复正常了。


问题5. brew update时连接不上github

解决:修改etc/hosts,尾部添加github的ip地址,如192.30.255.112;

可以在http://tool.chinaz.com/dns?type=1&host=github.com&ip= 查询ip地址


问题6. 如何查看app的bundle id

解决: 步骤1.真机连接电脑;步骤2.Xcode->Product->Destination->Add Additional Simulators…,在Devices菜单栏可以看到手机上所有的app bundle id。


问题7. 安装appium-doctor报错

npm install -g appium -doctor
  internal/modules/cjs/loader.js:611
  throw err;
  ^
  Error: Cannot find module 'semver'
  at Function.Module._resolveFilename (internal/modules/cjs/loader.js:609:15)
  at Function.Module._load (internal/modules/cjs/loader.js:535:25)
  at Module.require (internal/modules/cjs/loader.js:663:17)
  at require (internal/modules/cjs/helpers.js:20:18)
  at Object.<anonymous> (/usr/local/lib/node_modules/npm/lib/utils/unsupported.js:2:14)
  at Module._compile (internal/modules/cjs/loader.js:734:30)
  at Object.Module._extensions..js (internal/modules/cjs/loader.js:745:10)
  at Module.load (internal/modules/cjs/loader.js:626:32)
  at tryModuleLoad (internal/modules/cjs/loader.js:566:12)
  at Function.Module._load (internal/modules/cjs/loader.js:558:3)

解决:

brew uninstall node.js把/usr/local/lib下的node和node_modules文件都删除了

再执行以下代码:

sudo rm /usr/local/bin/npm
  sudo rm /usr/local/share/man/man1/node.1
  sudo rm /usr/local/lib/dtrace/node.d
  sudo rm -rf ~/.npm
  sudo rm -rf ~/.node-gyp
  sudo rm /opt/local/bin/node
  sudo rm /opt/local/include/node
  sudo rm -rf /opt/local/lib/node_modules

 

问题8. 启动app,Pycharm运行时提示找不到HTMLtestrunner模块。

需要在网上下载py文件http://tungwaiyip.info/software/HTMLTestRunner.html,并放到python的site-packages文件下


问题9. Pycharm里from appium时报错,提示找不到appium模块

解决:确保已安装appium模块,pip3 install appium-python-client,然后Pycharm->new project,再在Pycharm->preferences…,project Interpreter选项中,点击+,搜索appium-python-client,下载package;这时在pycharm里再输入from appium就能自动匹配,不报错了。


问题10. 提示Error running 'xxx': Cannot run program "/Users/xx/PycharmProjects/xxx/venv/bin/python" (in directory "/Users/xx/xxtest/xxx/test_case"): error=2, No such file or directory

解决:1).只创建project,在prefrence for new project菜单,找到Project Interpreter选项,在地址目录中会提示地址无效,这时点击Add添加按钮,重新定位到python的路径

2).设置之后,再创建项目文件,iostest—xxx—test_case和test_report,在test_case下创建py文件,再执行就不报错了。


问题11.  ModuleNotFoundError: No module named 'StringIO'

解决:在HTMLTestRunner.py 中修改import StringIO为from io import StringIO,将python2的写法改为python3的。


问题12.Appium昨天能运行,今天不能启动

解决:最终发现下图所示的sever选错了,正确应为如下所选中的选项

1.png


问题13. ios与android不同,定位元素时候,name方法应该为

 driver.find_element_by_accessibility_id(‘ ’)


问题14.  运行报错selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not create simulator with name 'appiumTest-iPad', device type id 'iPad' and runtime id '12.1'. Reason: 'simct…

解决:需要把在appium desk上的desired_caps中的bundleid添加到py文件里。


问题15. Pycharm上run时报错,提示python interpreter的路径is not empty

解决:在新建new project的窗口中,除了填写项目名称之外,千万别忘记打开第二个选项的右三角,“Project Interpreter:New Virtualenv environment”来设置运行时的编译环境;

如果在创建项目-脚本之后再去设置,会一直报错。


问题16. HTMLTestRunner报错

解决:HTMLTestRunner 是 Python 标准库中unittest 模块的一个扩展。使用它可以生成易于使用的 HTML 测试报告。

首先在http://tungwaiyip.info/software/HTMLTestRunner.html下载HTMLTestRunner.py文件,然后在Mac终端执行命令python3,接着输入以下命令:

   import sys
  sys.path

得到下图所示的路径

15243603_201907111028562Mmua.png

最后,把下载的文件复制到第2步高亮显示的路径下,那么pycharm中就可以import HTMLTestRunner。

由于python2和python3的写法不同,如果上述还会报错,则需要修改HTMLTestRunner.py文件。

第1步,HTMLTestRunner.py文件中按下面进行修改:

1)python3中模块io取代了StringIO

94行 import StringIO改为 import io

2)所有和StringIO相关的都要更改

540行 self.outputBuffer = StringIO.StringIO()改为 self.outputBuffer = io.StringIO()

3)python3没有has_key()方法,所以要更改如下代码

if not rmap.has_key(cls)改为 if not cls in rmap

4)python3的decode和python2不同更改

769行 uo = o.decode(‘latin-1’)改为 uo = e

779行 ue = e.decode(‘latin-1’)改为 ue = e

5)python3的print()方法和python2也有区别,更改

634行 print>>sys.stderr,’\nTime Elapsed=%s’ %(self.stopTime-self.startTime)

改为 print(sys.stderr,’\nTime Elapsed=%s’ %(self.stopTime-self.startTime))

6)再次运行HTMLTestRunner.py文件就OK了;

第2步,suite.py文件中修改:由于报错中提及from . import case和from . import util,将这两行所在的代码注释掉,再次运行suite.py文件也OK了

第3步,重新运行testcase.py文件,一份简洁明了的HTML形式的测试报告结果就可见了!

15243603_201907111028563I3aE.png


版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 最近在写一些脚本,为了保持连续性,就在家也抽空赶进度,所以碰到了代码同步的问题,目前想到的方法有三个: 使用云盘,这个拿来即用,但是因为云盘还存放了其他一些东西,总是实时同步不太妥当;使用 SVN,传统的代码托管工具,一直在用;使用 Git,最新的分布式代码托管工具,据说很强大。 最后决定使用 Git,主要是学习下最新的技术。下面是操作步骤,做记录的同时也给其他同学做个指引:先说下环境: 服务端: Ubuntu 16.04 x64客户端: Windows7 x64 服务端配置 先使用如下命令切到 root 权限进行操作:sudo bash 提示输入密码时,输入 root 密码即可。登录...
            1 1 3207
            分享
          • 一、同源策略所谓同源策略,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可二、什么是跨域 单地理解就是因为JavaScript同源策略的限制,一个域的页面去请求另一个域的资源,A域的页面去请求B域的资源。三、解决跨域1、Jsonp实现跨域jsonp的原理:动态创建<script>标签,而<script>的src属性是没有跨域限制的前端创建script标记,设置src,添加到head中(你可以往body中添加)后台返回一个js变量jsonp,这个jsonp就是请求后的JSON数据回调完成后删除script标记(还有一些清理工作如避免部分浏...
            0 0 1060
            分享
          • 问:网页端测试点有哪些?1.界面测试:链接能否跳转,跳转后的页面是否正确;有没有错误的信息;页面布局是否合理,风格是否统一,重点内容是否突出;图片表单位置是否正确。2.功能测试:保存:表单的输入有无格式、类型、 长度限制,内容错误有无提示;编辑和保存权限是否一致;数据能否保存成功,保存成功或失败有没有提示;字段能不能重复,不能重复有没有提示;保存成功后返回的页面是否正确;连续多次点击保存会不会新增多条重复的数据;特殊键Tab、Enter键是否能使用;数据关联性,有内容修改了,其它相关联的数据也要同步;上传:上传的文件的大小、类型手动输入上传的地址上传已删除的文件上传成功或失败的提示下载:导出的...
            0 0 1323
            分享
          •   之前,也和大家介绍过一些 redis 性能监控指标:Redis性能指标监控!,那么性能测试也是针对这些指标进行的。  Redis 包含一个名为 redis-benchmark 的性能测试工具,它可以模拟 N 个客户端同时向 Redis 发送 M 条查询命令的应用场景(类似于 Apache 的 ab 工具)。  语法格式  Redis 性能测试的基本命令如下:  注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。  注意:redis-benchmark 的测试结果和硬件关联比较大,尤其是 CPU 主频的频率。  # 工具使用格式...
            0 0 636
            分享
          • 参与《2022软件测试行业现状调查报告》读后感征文活动,领测试微课好礼。1、引言关于软件测试行业报告,对我来说,每年都会去关注, 这个习惯也保持了好些年。 而在人工智能领域爆发式增长的当前, 这无疑给软件测试行业增加了一份筹码。 同时,也希望通过软件测试行业的报告,来分析当前,规划未来。所以,借着51Testing的这次《2022软件测试行业现状调查报告》,我也来聊一聊自己的一些想法与感受。2、整体感受在《2022软件测试行业现状调查报告》中,可以体现出,51Testing调查报告的内容覆盖广泛,覆盖行业全面,覆盖技能全面....当然,这份76页的报告中,我也是花费了20多...
            1 0 1806
            分享
      • 51testing软件测试圈微信