基于python的Appium自动化测试的坑
真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试。
一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习。后来学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环境搭建合集
自动化一直是测试圈中的热聊,也是大家追求的技术方向.在测试中,往往回归测试也是测试人员的“痛点”.对于迭代慢.变更少的功能,就能用上自动化来替代人工回归,减轻工作量. 问题 在分享环境搭建之前,先抛出 ...
- 基于Python的selenuim自动化测试尝试
工作这么多年了,终于狠下心好好开始学学自动化测试相关知识,揭开这层神秘的面纱. 困难重重,障碍很多,但好在每天都多少有点小收获. 很感谢一个QQ好友推荐的虫师,也非常感谢在这个契机读到了虫师编著的&l ...
- 《Selenium自动化测试实战:基于Python》Selenium自动化测试框架入门
第1章 Selenium自动化测试框架入门 1.1 Selenium自动化测试框架概述 说到目前流行的自动化测试工具,相信只要做过软件测试相关工作,就一定听说过Selenium. 图1-1是某企业 ...
- 基于python的接口自动化测试+ddt数据驱动
在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...
- 基于Python的接口自动化测试框架
项目背景 公司内部的软件采用B/S架构,目的是进行实验室的数据存储.分析.管理. 大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与 ...
- MAC平台基于Python的Appium环境搭建
前言 最近笔者要为python+appium课程做准备,mac在2019年重新安装了一次系统,这次重新在mac下搭建appium环境,刚好顺带写个文稿给大家分享分享搭建过程. 一.环境和所需软件概述 ...
- 阿里大牛教你基于Python的 Selenium自动化测试示例解析
今天给大家讲解的是自动化测试示例的解析,如有不对的地方请多多指教. 自动化测试示例如下: from selenium import webdriver from selenium.webdriver. ...
- 基于python的selenium自动化测试环境安装
1. Python2安装 官方网站:https://www.python.org/downloads/ (python3或新版本已经默认集成了pip包和path,安装的时候打勾就行,可以直接跳过下面第 ...
- 基于C#的Appium自动化测试框架(Ⅰ)
因为工作原因,使用的编程语言都是C#,但是国内相应的Appium资料少得可怜,Java版本的Appium也考虑过,但是奈何自己搞不定Eclipse这个编译环境[说白了就是因为懒-- 无意中看到了外面的 ...
随机推荐
- 解决Jenkins权限配置错误,导致登录时出现没有Overall/read权限
问题 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->configure Global Security里设置用户的权限. 在启用安全-& ...
- 第1课 学习C++的意义
C++是C语言的加强,它们之间并不是对立的关系. 学习C++的优势: 现代软件产品的架构图: 操作系统抽象层:可有可无,但是作为一个移植性好的软件一定需要这一层.这一层的作用就是把操作系统提供的接口做 ...
- CF1082D:Maximum Diameter Graph (简单构造)
Graph constructive problems are back! This time the graph you are asked to build should match the fo ...
- Oozie_02安装遇到错误【20161116】
[错误原因]hadoop的core-site.xml配置错误 把用户名hadoop配置成了主机名hadoop01 <!-- OOZIE --><property> <n ...
- 20145237《网络攻防》Web基础
基础问题回答 什么是表单: 表单是一个包含表单元素的区域.表单元素是允许用户在表单中输入信息的元素.表单在网页中主要负责数据采集功能. 浏览器可以解析运行什么语言: 超文本标记语言:HTML: 可扩展 ...
- windows常用DLL及作用
Kernel.dll:内存,硬盘灯硬件管理的相关函数. gdi32.dll:图形显示相关函数(LoadImage,GetPixel,StretchBlt,Ellipse). user32.dll:wi ...
- slot的使用实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在WPF中使用CefSharp嵌入浏览器(转)
在WPF中使用CefSharp嵌入浏览器 日常开发中,我们需要将一些Web页面嵌入到桌面客户端软件中.下面我们使用CefSharp嵌入浏览器来实现. 首先先介绍一下CefSharp嵌入式浏览器,它 ...
- Netty5.x 和3.x、4.x的区别及注意事项(官方翻译)
Netty5.x 和3.x.4.x的区别及注意事项 (官方翻译) 本文档列出了Netty5新版本中值得注意变化和新特性列表.帮助你的应用更好的适应新的版本. 不像Netty3.x和4.x之间的变化 ...
- Spring AOP 实现读写分离
原文地址:Spring AOP 实现读写分离 博客地址:http://www.extlight.com 一.前言 上一篇<MySQL 实现主从复制> 文章中介绍了 MySQL 主从复制的搭 ...