前提:根据前面的环境搭建介绍,安装好相关环境

step1:启动android模拟器

step2:启动Appium服务端

step3:演示代码执行

  这里执行的是官方的演示代码:通讯录管理app,安装打开app,并添加一个联系人保存的操作

  a.首先去下载ContactManager.apk放到E盘   E:\ContactManager.apk

    https://github.com/appium/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk

  b.将官网的示例代码 android_contact.py 下载下来 放在 Python的目录

    https://github.com/appium/sample-code/blob/master/sample-code/examples/python/android_contacts.py

  c.对python代码进行部分修改

#!/usr/bin/env python
# -*- coding: utf-8 -*- import os
import unittest
from appium import webdriver
from time import sleep # Returns abs path relative to this file and not cwd
PATH = lambda p: os.path.abspath(
os.path.join(os.path.dirname(__file__), p)
) class ContactsAndroidTests(unittest.TestCase):
def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['app'] = PATH(
'E:\ContactManager.apk'
)
desired_caps['appPackage'] = 'com.example.android.contactmanager'
desired_caps['appActivity'] = '.ContactManager' self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) def tearDown(self):
self.driver.quit() def test_add_contacts(self):
el = self.driver.find_element_by_accessibility_id("Add Contact")
el.click() textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
textfields[0].send_keys("Appium User")
textfields[2].send_keys("someone@appium.io") self.assertEqual('Appium User', textfields[0].text)
self.assertEqual('someone@appium.io', textfields[2].text) self.driver.find_element_by_accessibility_id("Save").click() # for some reason "save" breaks things
alert = self.driver.switch_to_alert() # no way to handle alerts in Android
self.driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)').click() self.driver.press_keycode(3) if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)

***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***

Appium 自动化测试(4)-- 脚本开发:官方demo演示 android_contacts.py的更多相关文章

  1. 跨平台移动开发 App-Framework DEMO 演示

    穿越到2015 回到->MarkFan的程序员客栈 App-Framework   DEMO 演示 点击APK包下载 点击Demo代码下载 官方网站 :http://app-framework- ...

  2. 自动化测试badboy脚本开发(一)

    badboy的检查点: 检查点设置例子:以上一节脚本录制方法简单录制搜索“badboy”脚本,在搜索框中选中搜索内容(注意录制脚本后要停止录制)→点击工具栏中的Tools→选择Add Assertio ...

  3. Appium移动自动化测试(四)--one demo(转)

    Appium移动自动化测试(四)--one demo 2015-06-15 20:41 by 虫师, 40514 阅读, 34 评论, 收藏, 编辑 继续更新. ------------------- ...

  4. Jmeter+Ant+Jenkins接口自动化测试(二)_测试方案设计及jmeter脚本开发

    前言 根据之前部署好的测试环境,进行接口自动化测试的方案设计及Jmeter脚本开发.测试方案设计过程中采用了数据分离和对象分离等思路,因此直接通过特定的测试用例文档来驱动整个自动化接口测试的执行,相关 ...

  5. 性能测试学习之路 (四)jmeter 脚本开发实战(JDBC &JMS &接口脚本 & 轻量级接口自动化测试框架)

    1.业务级脚本开发 登录脚本->思路:在线程组下新建两个HTTP请求,一个是完成访问登录页,一个是完成登录的数据提交.   步骤如下: 1) 访问登录页 2) 提交登录数据的HTTP PS:对于 ...

  6. 微信小游戏 Egret开发数据域官方Demo下载地址

    随着引擎的升级,伴随而来就是各种问题,使用官方调试过的Demo,少走弯路. Mark下 官方Demo

  7. 【cartogarpher_ros】二: 官方Demo的介绍与演示

    上一节我们介绍了在linux中快速安装集成ros环境的cartographer. 本节我们会来跑一些官方demo,用于测试cartographer是否正确安装,顺便看看cartographer的建图与 ...

  8. Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)

    1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...

  9. Appium自动化测试-iOS

    Appium的哲学 我们相信,对原生应用的自动化测试,应当不必要包含其他的SDK组件或者特别编译您的App,并且应当可以选择任何您喜欢的测试方法,框架和工具.基于这些出发点我们开发了Appium.现在 ...

随机推荐

  1. Java Concurrency In Practice

    线程安全 定义 A class is thread-safe if it behaves correctly when accessed from multiple threads, regardle ...

  2. 查看python对象的属性

    在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...

  3. git命令集合

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  4. go——结构

    Go语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型.结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体定义需要使用type和struct语句.str ...

  5. 关于python中的查询数据库内容中用到的fetchone()函数和fetchall()函数(转)还有fetchmany()

    最近在用python操作mysql数据库时,碰到了下面这两个函数,标记一下: fetchone() : 返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None fetchall() ...

  6. LeetCode:下一个更大元素I【31】

    LeetCode:下一个更大元素I[31] 题目描述 给定两个没有重复元素的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集.找到 nums1 中每个元素在 nums2 中的 ...

  7. Oracle数据安全(五)审计

    一.审计的概念 审计是监视和记录用户对数据库所进行操作,以供DBA进行统计和分析.利用审计可以完成下列任务 保证用户能够对自己在数据库中的活动负责. 禁止用户在数据库中从事于自己职责不相符的活动 调查 ...

  8. docker安装部署PHP nginx

    sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=htt ...

  9. Linux下的查找命令which、whereis、locate、find(6/20)

    Linux下查找相关命令主要有以下4个:which.whereis.locate.find. (1)which   [-a]    cmdname1 cmdname2 ...... 命令参数: -n  ...

  10. Nginx 限制php解析、限制浏览器访问

    限制php解析 1.有时候会根据目录来限制php解析: location ~ .*(diy|template|attachments|forumdata|attachment|image)/.*\.p ...