测试环境
- Win 10 64bit
- Python 3.5
- Appium 1.7.2
- Andriod 5.1.1 模拟器& Android 5.1 MX4
- 测试App:考研帮Android版 3.1.0
测试场景
自动安装考研帮App(kaoyan3.1.0.apk),然后启动App
测试步骤
- 获取待测试app的packageName和Activity
- 配置Capability
- 连接设备
- 编辑脚本并运行
- 查看结果
运行前检查事项
- 检查设备是否连接
- 检查Appium server是否启动
- 检查Capability配置信息是否正确
测试脚本
test_kyb.py
from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['deviceName'] = '127.0.0.1:62001' desired_caps['platforVersion'] = '5.1.1' # 真机配置 # desired_caps['deviceName']='MX4' # desired_caps['platforVersion']='5.1' # desired_caps['udid']='750BBKL22GDN' desired_caps['app'] = r'C:\python_dir\apps\kaoyan3.1.0.apk' desired_caps['appPackage'] = 'com.tal.kaoyan' desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity' driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
pycharm常用快捷键
- 复制粘贴当前行 Ctrl+D
- 注释 Ctrl+/
- 运行当前脚本 Ctrl+shift+F10
- 折叠展开代码 Ctrl + Numpad + /-
- 方法定义跳转 Ctrl+B
1.首次启动Appium会在设备上安装2个守护app,Appium Settings和Unlock 部分设备系统由于权限的问题(如:三星S6 edge+)需要用户手动确认安装,否则不安装守护App会导致脚本运行失败,安装好后不要随意卸载这两个App。
- Unlock :用于解锁手机弹窗提示
- Appium Setting:Appium守护app
- from appium import webdriver 中的webdriber模块和selenium中的webdriver模块不一样!
webdriver模块源码路径:
{python安装路径}}\Lib\site-packages\appium\webdriver
Appium报错&解决方案——那些年我们踩过的坑
Appium服务未启动
urllib.error.URLError: <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。
【解决方案】点击启动Appium按钮后,出现[Appium] Welcome to Appium v1.7.2提示后再运行脚本
会话冲突
error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress
【报错分析】 之前的会话没有关闭,然后你又运行了测试实例,也没有设置覆盖.
【解决方案】 重新停止appium服务,开启Appium服务 在AdVance界面勾选Allow Session Override选项 ,重启Appium 测试结束在AfterClass加driver.quit()
未安装java环境
selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: 'java -version' failed. Error: Command failed: C:\WINDOWS\system32\cmd.exe /s /c "java -version"
设备未连接
selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find a connected Android device.
【解决方案】由于设备未连接,或者连接后未开启USB Debug。需要重新连接设备即可。
更换手机设备后如下对应的属性要记得更新,否则无法正常运行脚本。
desired_caps['platformVersion'] = 'XXX'
desired_caps['deviceName'] = 'Galaxy S6 edge+'
launchable activity 值写错
Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity
【解决方案】
- launchable activity 写错更正即可。
- 如果是存在此activity,则一定是AndroidMainfest.xml.xml中,当前activity设置的属性exported=false,表示当前activity无法被外部程序唤醒。(appium无法唤醒此类)需要研发人员去修改参数。
系统权限问题
Failure [INSTALL_FAILED_USER_RESTRICTED])
【解决方案】
- USB安装管理权限限制,关闭即可。
- 开启安装允许未知来源app选项
服务异常
An unknown server-side error occurred while processing the command” while opening the App
【解决方案】重新启动Appium服务
第一个Appium脚本的更多相关文章
-
appium学习【四】:第一个appium脚本
#coding=utf-8 import os import HTMLTestRunner import unittest import time import sys from appium imp ...
-
Appium移动自动化测试-----(六)4.运行第一个Appium脚本
新建maven空白工程 前置条件:安装eclipse或IntelliJ IDEA,及其maven插件,请自行百度 新建的工程如下: 新建目录apps,并将下载的安装包,拷贝到该目录下 打开POM增加依 ...
-
python+Appium自动化:运行第一个appium脚本
用pycharm工具进行编写,运行一个开启淘宝app实例 from appium import webdriver desired_caps = { "platformName": ...
-
一个简单的appium脚本
这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等. 它是一个最原始的脚本,对测试元素.数据.报告等未作任何的封装,后面 ...
-
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
-
(转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...
-
genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤
genymotion+Oracle VM VirtualBox + eclipse + appium 脚本运行慢解决步骤 1.lenove 机器启动时按F1 进入bios 设置,设置cpu virtu ...
-
分享一个SQLSERVER脚本
原文:分享一个SQLSERVER脚本 分享一个SQLSERVER脚本 很多时候我们都需要计算数据库中各个表的数据量很每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespac ...
-
shell脚本中执行另一个shell脚本
分类: 可以在一个shell脚本中执行另一个shell脚本(或非可执行文件,主要用于取得一些变量的值),方法是: . 文件名(包括路径) 或 变量=文件名(包括路径) . $变量 注意,圆点后面有 ...
随机推荐
-
jquery的each()详细介绍
each()方法能使DOM循环结构简洁,不容易出错.each()函数封装了十分强大的遍历功能,使用也很方便,它可以遍历一维数组.多维数组.DOM, JSON 等等在javaScript开发过程中使用$ ...
-
Linux 利用 locate 和 find 查找文件
Linux 利用 locate 和 find 查找文件 命令 locate 用于快速查找文件.文件夹.此命令并没有在磁盘上查找所有文件,而是在预先建立的数据库里进行搜索.可以使用 updatedb 命 ...
-
使用ionic framework创建一个简单的APP
ionic是一个以cordova为基础的html5前端框架,功能强大,能够快速做出与原生开发相似的应用. 一,安装和配置 1,安装(前提:cordova环境配置完成) npm install -g i ...
-
[LeetCode] Ugly Number II
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...
-
c89和c99中/运算符和%运算符为负数时的区别
运算式 -8 / 5 = -1.6,在C89中取值为 -1 或 -2,C99的出现,CPU对除法的结果向零取整,上述运算式结果为 -1. 在C89和C99中都要确保 (a / b) * b + a % ...
-
flask入门篇
flask,Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . Flask简单易学,属于轻量级的,学起来 ...
-
iOS设计指南
备忘:iOS设计指南:http://www.ui.cn/detail/32167.html
-
Problem 5: Smallest multiple
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any rema ...
-
常见模块(四) os模块
注: os模块是实现python程序对操作系统(operation system)的操作 1.对文件或者目录进行删除或者创建的相关操作 # os.rename("b"," ...
-
IE 主页被恶意篡改的解决方法
IE 主页被篡改了,在ie 的 主页设置中不起任何作用,这个时候,就要打开注册表来修改: 具体操作如下: 1.运行 regedit 打开注册表 2.找到 HKEY_LOCAL_MACHINE\SOF ...