第一个Appium脚本

测试环境

  • 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
  • 连接设备
  • 编辑脚本并运行
  • 查看结果

运行前检查事项

  1. 检查设备是否连接
  2. 检查Appium server是否启动
  3. 检查Capability配置信息是否正确

测试脚本

test_kyb.py

 1 from appium import webdriver
 2 
 3 desired_caps = {}
 4 desired_caps['platformName'] = 'Android'
 5 desired_caps['deviceName'] = '127.0.0.1:62001'
 6 desired_caps['platforVersion'] = '5.1.1'
 7 
 8 # 真机配置
 9 # desired_caps['deviceName']='MX4'
10 # desired_caps['platforVersion']='5.1'
11 # desired_caps['udid']='750BBKL22GDN'
12 
13 desired_caps['app'] = r'C:\python_dir\apps\kaoyan3.1.0.apk'
14 desired_caps['appPackage'] = 'com.tal.kaoyan'
15 desired_caps['appActivity'] = 'com.tal.kaoyan.ui.activity.SplashActivity'
16 
17 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
  1. 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])

【解决方案】

  1. USB安装管理权限限制,关闭即可。
  2. 开启安装允许未知来源app选项
服务异常

An unknown server-side error occurred while processing the command” while opening the App

【解决方案】重新启动Appium服务

 

转载于:https://www.cnblogs.com/gongxr/p/10656423.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux阻塞原语,Linux中的内存原语是什么?

man namespaces有一个关于IPC名称空间的部分.IPC namespaces isolate certain IPC resources, namely, System V IPCobjects (see 07001) and (since Linux 2.6.30) POSIX message queues(see 07002). The common characteristic of these IPC mechanisms is that IPC objects …

遵循国际网站标准进行网站设计和改善(转)

转于&#xff1a;http://www.mfwu.net/mfwu/cool_950.htm   当我们觉得网站设计技术已经非常简单和熟悉的时候&#xff0c;国外网站设计标准化的概念早已悄悄的形成和迅速“蔓延”&#xff0c;自2000年起&#xff0c;大部分新发行的浏览器版本都开始支持网站标准。主流的网页…

SQL Server查询结果中添加自动编号

往往经常有这样的需求&#xff0c;我需要在查询的结果中添加一列类似于Identity的数字&#xff0c;虽然在Client编程中并不难实现&#xff0c;但是有时我想留用现有的Class&#xff0c;不希望在Client side做额外的coding&#xff0c;那么就只有在Sql里面想办法了 首先介绍一种…

linux 培训6,Linux Syscalls有 6个参数(Linux Syscalls with 6 parameters)

Linux Syscalls有> 6个参数(Linux Syscalls with > 6 parameters)是否可以编写一个具有6个以上输入参数的(linux内核)sycall函数&#xff1f; 查看标题我发现定义的系统调用宏最多有6个参数。 我很想尝试定义SYSCALL7和SYSCALL8以允许7和8参数&#xff0c;但我不太确定它…

c语言搜索子字符串

c字符串功能练习&#xff1a; 获取一行字符串&#xff0c;然后&#xff0c;在这行字符串中搜索是否包含一个小字符串 #include <cstdio> …

asp.net 导出word excel 当前上下文中不存在名称“Encoding”报错问题

web页面<% Page Language"C#" EnableEventValidation"false" AutoEventWireup"true" CodeBehind"CheapMaterialManageSet.aspx.cs" Inherits"AssetsManager.DeskWeb.BaseDOC.CheapMaterialManageSet" %>using System.…

linux中fstab含义,fstab每一列的含义

&#xff1c;fstab文件总览&#xff1e;当然&#xff0c;由于每个人的分区和设备属性或者所在的系统不同&#xff0c;所以fstab文件不尽相同&#xff0c;但是基本的结构总是相似的&#xff0c;下面是/etc/fstab中内容的一些示例&#xff1a;/etc/fstab:/dev/hda2 / ext2 defaul…

命令编写注册表文件修改注册表项

命令编写注册表文件修改注册表项 1、何谓REG文件REG文件实际上是一种注册表脚本文件&#xff0c;双击REG文件即可将其中的数据导入到注册表中。利用REG文件我们可以直接对注册表进行任何修改操作&#xff0c;它对注册表的操作可以不受注册表编辑器被禁用的限制&#xff0c;因此…

linux 刻录cd,Linux 刻录CD/DVD命令 growisofs/mkisofs/cdrecord

1 . 制作ISO&#xff1a; $ mkisofs -V LabelName -J -jcharsetutf8 -r -o /home/TargetImage.iso /home/my-data-dir参数V是volumn ID,卷标&#xff1b;参数J表示产生Joliet ( name of an extension to the ISO 9660 file system) , 制作与windows兼容的盘。2. 查看设备&#…

UOJ#196. 【ZJOI2016】线段树 概率期望,动态规划

原文链接www.cnblogs.com/zhouzhendong/p/UOJ196.html 题解 先离散化&#xff0c;设离散化后的值域为 $[0,m]$ 。 首先把问题转化一下&#xff0c;变成&#xff1a;对于每一个位置 $i$ &#xff0c;求出它最终不超过 $j$ 的方案数。 考虑如何求这个东西。 对于一个固定的 $j$ &…

又论社区风气, 与程序员是干嘛地的.

为了避免误解, 重新声明一下, 本文纯粹针对"博客园风气如何如何, 博客园的话题如何如何"这些说法, 不含有任何不用基础学习或者必须学习某一方面/最好广泛学习或者必须深钻一门等倾向, 如果有的话说的有偏向性, 请当作一时表达不清. "我可以不同意你的观点, 但我…

在手机上如何用c语言编译器编程,如何用手机进行编程?

这里介绍3种可以在手机上编程的app&#xff0c;分别是c语言编译器(c语言)、AIDE集成开发环境(java)、QPython3(python)&#xff0c;都不需要root&#xff0c;可以直接编写程序并运行&#xff0c;下面我简单介绍一下这3个app的安装和简单使用&#xff0c;主要内容如下&#xff1…

SDOI2014 旅行

传送门 省选前水一发 这题一开始看标签是主席树……后来……这题和主席树有啥关系…… 可以想到对于每种宗教用树剖线段树维护即可。然后因为空间不够要动态开点。然后改宗教&#xff0c;改评级的&#xff0c;把原来的点删了再插一个新点就可以了。查询最大值&#xff0c;和就直…