import unittestimport timefrom appium import webdriverfrom public import configimport os

#类继承unittest.TestCase 类,从TestCase类继承是告诉unittest模块的方式,这是一个测试案例。class ContactsAndroidTests(unittest.TestCase):    #setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。    def setUp(self):        desired_caps = {}        desired_caps['platformName'] = 'Android'        desired_caps['platformVersion'] = '4.3'        desired_caps['deviceName'] = '127.0.0.1:5554'        # 版本小于4.2.2(api17)都需要指定selendroid        # desired_caps['automationName'] = 'selendroid'        # 安装APP        PATH = lambda p: os.path.abspath(os.path.join(os.path.dirname(__file__), p))        desired_caps['app'] = PATH('..\\apk\\test.apk')        #包名        desired_caps['appPackage'] = 'com.android.calculator2'        #activity        desired_caps['appActivity'] = '.Calculator'        #支持中文输入法        desired_caps['unicodeKeyboard'] = True        #运行结果后还原输入法        desired_caps['resetKeyboard'] = True        #跳过重签名        desired_caps['noSign'] = True        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

        #启动activity        # self.driver.start_activity('com.android.calculator2','.Calculator')

    #earDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出    def tearDown(self):        now = time.strftime('%H_%M_%S',time.localtime(time.time()))        self.driver.save_screenshot(""+config.screenshotpath+"test_demo"+now+".png")        self.driver.close_app()        self.driver.quit()

    #放置的就是我们的测试脚本了,这部分我们并不陌生;因为我们执行的脚本就在这里。    def test_add_contacts(self):        self.driver.find_element_by_id("com.android.calculator2:id/digit7").click()        self.driver.find_element_by_id("com.android.calculator2:id/mul").click()        self.driver.find_element_by_id("com.android.calculator2:id/digit9").click()        self.driver.find_element_by_id("com.android.calculator2:id/equal").click()        text = self.driver.find_element_by_class_name("android.widget.EditText").text        self.assertEqual(text,'63','结果有误!')

#unitest.main()函数用来测试 类中以test开头的测试用例if __name__ == '__main__':    pass
 

Appium Demo的更多相关文章

  1. appium ios Demo

    Appium Demo 录制图片,环境搭建完毕后根据视频基本能利用模拟器完成简单测试用例 感谢大神http://www.cnblogs.com/tobecrazy/p/4970188.html

  2. appium+java(四)微信公众号自动化测试实践

    前言 随着手机阅读的普遍应用,微信公众号阅读,更为普遍,微信和qq一样,都是基于腾讯自研X5内核,不是google原生webview(其实就是进行了二次定制).实质上也是混合应用的一种,现在很多app ...

  3. 基于centos7下appium环境搭建

    事件背景: 前几日在群里看到关总说他的server端是搭建在linux环境下,包括对客户端与服务端的交互处理,感觉整体思路清晰可鉴,于是就想尝试,动手实践,接着从环境搭建开始搞起,于是就有了这篇文章, ...

  4. 2020,6招玩转 Appium 自动化测试

    Appium是个什么鬼 Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的.可用于IOS和Android以及firefox的操作系统.原生的应用是指用an ...

  5. appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法 一,    打开手机的USB调试模式 二,    连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...

  6. appium 执行demo

    appium很早就了解了,一直没有之际操作过,最近把官网的demo搞下来执行了一遍,还是很有意思的 经过测试是可以跑起来的,不过跑得过程中,输入法需要默认为英文的,如果是中文的码输入的时候有点问题,可 ...

  7. appium+java+junit demo运行

    对java熟悉一些,所以想用java把appium给做起来.今天用myeclipse给环境和Demo弄了一下,网上没有一篇全套资料的. 各块环境的搭建: 1.安装appium客户端,省略下载和安装步骤 ...

  8. appium跑demo简单实例讲解

    安装appium,设置 demo.pyfrom appium import webdriver #要装webdriver,方法查看http://www.cnblogs.com/sincoolvip/p ...

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

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

随机推荐

  1. eclipse快捷键调试总结 -转--快捷键大全

    (1)Ctrl+M --切换窗口的大小(2)Ctrl+Q --跳到最后一次的编辑处(3)F2      ---重命名类名 工程名 --当鼠标放在一个标记处出现Tooltip时候按F2则把鼠标移开时To ...

  2. TensorFlow学习笔记之--[compute_gradients和apply_gradients原理浅析]

    I optimizer.minimize(loss, var_list) 我们都知道,TensorFlow为我们提供了丰富的优化函数,例如GradientDescentOptimizer.这个方法会自 ...

  3. Faster_RCNN 1.准备工作

    总结自论文:Faster_RCNN,与Pytorch代码: 代码结构:  simple-faster-rcnn-pytorch.py data __init__.py dataset.py util. ...

  4. 移植busybox构建最小根文件系统

    Busybox:瑞士军刀,里面装有很多小命令. STEP 1:构建目录结构  创建根文件系统目录,主要包括以下目录/dev  /etc /lib  /usr  /var /proc /tmp /hom ...

  5. HTTP协议05-Web服务器

    1)用单台虚拟主机实现多个域名 HTTP/1.1规范允许一台HTTP服务器搭建多个Web站点.比如,提供Web托管服务的供应商,可以用一台服务器为多位客户服务,也可以以每位客户持有的域名运行各自不同的 ...

  6. 解决python发送multipart/form-data请求上传文件的问题

    服务器接收文件时,有时会使用表单接收的方式,这意味着我们需要使用Python的requests上传表单数据和文件. 常用的方式一般如下: data = { 'name': 'nginx' } file ...

  7. Mudo C++网络库第八章学习笔记

    muduo网络库的设计与实现 muduo是基于Reactor模式的C++网络库; Reactor的关键结构 Reactor最核心的是事件分发机制, 即将IO multiplexing拿到IO事件分发给 ...

  8. python old six day

    今天主要内容: . is 和== 的区别 . 编程的问题 一.       is和==的区别! is  比较的是内存地址 ==  比较的是值 记住结果就好 ⑴id 通过id() 我们查看到一个变量表示 ...

  9. JMeter 中_time 函数的使用(时间戳、当前时间)

    有时在接口测试时,其参数需要为时间戳或者是日期格式的数据.针对此问题,可以使用JMeter自带的_time 函数来解决以上问题 操作步骤: 1.通过函数助手,生成一个_time 函数: 2.如果参数为 ...

  10. 远程连接阿里云的mysql数据库

    第一步 由于mysql版本问题 先尝试打开 sudo vim /etc/mysql/my.cnf 如空,再尝试打开 sudo vim /etc/mysql/mysql.conf.d/mysqld.cn ...