真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试。

一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习。后来学seleinum听说他出书了《python+selenium》的这本我买了也学习了,是这本书带着我这个代码小白入门的,其实很多事情不愿意开始就一直不会开始,一旦开始了,可能也没有当初想的那么难。最近想学习下appium的时候发现他还有一个专门针对测试的网页http://www.testclass.net/,现在这么有用且条理清晰没有广告的网站真的很难得。

有关appium几乎所有的内容都是跟着testclass网站上的教程走下来的,不过踩到了几个坑,这里就记录一下这几个坑。

一、Could not extract PIDs from ps output.

配置好所有的环境后,运行脚本,提示下面的错误:

selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"])

修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件

添加这行:

this.shell("ps '" + name + "'", function (err, stdout) {

...

var procs = [];

var outlines = stdout.split("\n");

outlines.shift()   //添加这行

参考文档:http://blog.csdn.net/zxz_tsgx/article/details/53204258

二、获取应用的包名packageName 和 ActivibyName

配置desired_caps 信息时需要获得appPackage和appActivity

desired_caps = {}

desired_caps['platformName'] = 'Android'

desired_caps['platformVersion'] = '7.0'

desired_caps['deviceName'] = 'c1b8cb07'

desired_caps["appPackage"] = 'com.lianchuan.cashloan'

desired_caps['appActivity'] = 'com.lianchuan.cashloan.activity.other.SplashActivity'

如果关于apk的信息未知,可以通过使用logcat方法:

清除logcat内容,使用命令adb logcat -c

启动logcat,使用命令adb logcat ActivityManager:I *:s

启动要查看的程序

括号中分别为PackageName和ActivityName

参考文档:http://blog.csdn.net/jlminghui/article/details/40622103

三、有关开启android模拟器

创建模拟器时提示 No System images installed for this target,需要到SDK Manager中安装“ARM EABI v7a System Image”组件。

模拟器打开是很慢的,需要很多耐心,且模拟其中的一些操作和真机还有所不同,下面是模拟器按键和键盘按键的对应。

参考文档:http://www.cnblogs.com/fnng/p/4560298.html

四、android webdriver appium中的Xpath定位

appium中的定位主要用到的工具是SDK 自带的uiautomatoviewer.bat,这个文件存放在SDK 目录的tools文件夹中。

UI automator Viewer工具可以查看录制下来的页面的属性。

参考文档:https://testerhome.com/topics/7129

五、appium中滑动屏幕的方法

appium中的swipe方法的使用为:swipe(int startx, int starty, int endx, int endy, int duration)

start_x:开始滑动的x坐标。 * start_y:开始滑动的y坐标。 * end_x:结束滑动的x坐标。 * end_y:结束滑动的y坐标。 * duration:持续时间

但是不同大小的手机屏幕,元素所在的位置是不确定的,所以可以用占屏幕的位置比例来定位滑动的位置。

获取屏幕的宽  width = driver.get_window_size()['width']

获取屏幕高  height = driver.get_window_size()['height']

获得屏幕的宽高之后,上滑操作可以理解为,手指从屏幕的3/4高度出移动到1/4高度处。

driver.swipe(1/2*width, 3/4*height, 1/2*with, 1/7*height, 200)

参考文档:http://blog.csdn.net/u011541946/article/details/77986018

六、在有些手机上每次运行都要提示安装Appium Settings 和 Unlock的问题

不同的手机设置这个情况也未必都会出现,如果出现这个问题,可以在手机已经安装好这两个之后,操作\Appium\node_modules\appium\lib\devices\android目录下的android.js文件

//this.pushSettingsApp.bind(this),

//this.pushUnlock.bind(this),

//this.unlock.bind(this),

将上面三行注释再重启appium。

参考文档:https://www.cnblogs.com/dreamyu/p/8027050.html

七、Appium中send_keys无法输入中文 和 Appium中键盘输入不能使用的问题

Appium已支持中文输入,但是需要用appium自带输入法(没有UI 界面)

在初始化设置中增加一下两行代码:

desired_caps["unicodeKeyboard"] = "True"

desired_caps["resetKeyboard"] = "True"

参考文档:https://testerhome.com/topics/1903

Appium中键盘输入无法使用问题,需要用adb方法先调用一个输入法,在cmd中输入

adb shell ime list -s      查看所有可用输入法

adb shell ime set com.sohu.inputmethod.sogou/.SogouIME    调用搜狗输入法

将对adb的调用写入python代码:

import os

command = 'adb shell ime list -s'

os.system(command)

以上代码就可以在python中使用adb命令。

参考文档:https://www.jianshu.com/p/28937a73316e

(有些输入法依旧不能使用键盘press_keycode功能,测试搜狗输入法可以使用;但是有的输入法不能直接用send_keys上传文字,测试搜狗输入法不能直接上传文字,这时候,又需要用上面那个方法调出appium自带的输入法输入中文后,再换成搜狗,然后再点击键盘……复杂了我的appium!)

虫师python appium自动化测试书_基于python的Appium自动化测试的坑相关推荐

  1. python职业规划书_基于Python数据分析做职业规划

    1.Situation项目背景 为朝着数据分析方向发展,利用假期时间自学了Python,想利用所学Python知识独立完成一个包含数据挖掘.数据分析.数据可视化的项目,与此同时希望项目结果可以帮助我更 ...

  2. python自动化测试开发_基于python的selenium2自动化测试从基础到实战(Python3、selenium2、自动化测试、web测试)...

    Selenium2是目前比较流行的一款针对web页面测试的自动化测试工具,他的前身是Selenium .Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mozi ...

  3. python语法元素测试_基于python全局设置id 自动化测试元素定位过程解析

    背景: 在自动化化测试过程中,不方便准确获取页面的元素,或者在重构过程中方法修改造成元素层级改变,因此通过设置id准备定位. 一.python准备工作: 功能:用自动化的方式进行批量处理. 比如,你想 ...

  4. 基于python的智能家居_基于Python的智能家居自动化测试脚本设计及实现

    投稿网址 http:www.VideoE.cn|<电视技术>第39 卷第5 期(总第458 期) 117 [本文献信息]沈杰,潘科,刘昕,等. 基于 Python 的智能家居自动化测试 ...

  5. python自动化测试框架结构_基于Python的HTTP接口自动化测试框架实现

    一.测试需求描述 对服务后台一系列的http接口功能测试. 输入:根据接口描述构造不同的参数输入值 输出:XML文件 二.实现方法 1.选用Python脚本来驱动测试 2.采用Excel表格管理测试数 ...

  6. autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术

    AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...

  7. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  8. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  9. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

最新文章

  1. asp.net2.0导出pdf文件完美解决方案
  2. java多线程系列(1)
  3. linux 显示文字在桌面背景,Linux下Xwindow的字体配置(所谓的字体美化)
  4. make and run
  5. Linux内核源码分析方法
  6. ASPxGridView EditFormLayout修改 TextBox文本长度
  7. Java 父类子类的对象初始化过程
  8. Servlet之javaweb应用(二)
  9. explain如何查看mysql_MySql中如何使用 explain 查询 SQL 的执行计划
  10. Table 点击单元格编辑并获取对应的行列
  11. [转载] epoll详解
  12. 运动目标跟踪(十四)--MIL跟踪
  13. 适合程序员演讲的定场诗
  14. HD Tune Pro: WDC WD1600AAJS-00B8D 160g inMyRitMachi
  15. linux格式u盘没有fat32,U盘,移动硬盘安装Linux的主分区,逻辑分区,FAT32格式分区的问题...
  16. leapftp,leapftp中文教程加图解
  17. 微信内置浏览器 用 JS 调用微信APP分享到微信朋友圈
  18. POJ 2387 Dijkstra
  19. 如何在Mac上查找重复文件?
  20. 通da信股本变迁gbbq权息文件解密

热门文章

  1. 计算机中管理方法科学化的重要性,浅论档案科学化管理的重要性
  2. Oracle中case when用法
  3. 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串 1
  4. 第二章 Python数据类型详解
  5. “奔三”了,程序员,你该怎么选择未来的路?
  6. 如何洗脸才正确?洗脸也有讲究 - 生活至上,美容至尚!
  7. 矩阵对抗与漏洞补丁201001(第4期)
  8. Android下拉刷新SwipeRefreshLayout简单用法
  9. 同一个页面多个按钮,根据按钮名字执行相应功能
  10. elenium使用IE浏览器的配置方法