appium 学习笔记(四)

原创 2018年04月17日 16:46:48

继续完善脚本:

运行自动登录脚本发现会弹出权限弹框,因此需要添加一个点击动作

通过xpath定位到该元素:

self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]")

为了避免可能有些机型不会弹框,这里写一个try来做点击事件

try:  #自动点击app授权弹框
    button = self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]")
    button.click()
except:
    print("自动点击应用app授权出错!")



完成登录动作后,需要验证是否登录成功,用unittest的断言assert进行验证

这里可以通过捕捉登录后的title进行验证,代码如下:

title = self.driver.find_element_by_id("com.happy.food:id/title").text
self.assertIn(title,"开心粮票")

一个简单的自动化脚本基本完成,下面是完整的代码:

from appium  import webdriver
from time import sleep
import adbbase
import unittest


class happyfoodTest(unittest.TestCase): #自动化框架,继承unittest.TestCase
    """Test com.happy.food"""

    def setUp(self): #准备测试环境,每个用例前执行
        desired_caps = {}
        desired_caps['platformName'] = 'Android'
        desired_caps['paltformVersion'] = adbbase.platformVersion()
        desired_caps['deviceName'] = adbbase.platformName()
        desired_caps['appPackage'] = adbbase.appPackage()
        desired_caps['appActivity'] = adbbase.appActivity()

        self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)

        sleep(5)

    def test_login(self): #用例,以test开头;登录测试
        """Test login"""
        self.driver.find_element_by_id("phoneNumber").send_keys("13410066133")
        self.driver.find_element_by_id("passWord").send_keys("1234567a")
        self.driver.back()
        self.driver.find_element_by_id("login").click()
        sleep(1)
        try:  #自动点击app授权弹框
            button = self.driver.find_element_by_xpath("//android.widget.Button[contains(@text,'允许')]")
            button.click()
        except:
            print("自动点击应用app授权出错!")
        sleep(1)
        title = self.driver.find_element_by_id("com.happy.food:id/title").text
        self.assertIn(title,"开心粮票")

    def tearDown(self): #清理环境,用例执行完后执行
        self.driver.quit()

if __name__ == '__main__':
    unittest.main()


机器学习笔记(四)Logistic回归

Logistic回归原理及推导。构建了一个简单的分类问题,利用库和手写算法比较结果的异同,分类结果良好,但参数相差很大,希望有大神可以指点。...
  • sinat_22594309
  • sinat_22594309
  • 2017-02-19 17:32:37
  • 857

Nodejs学习笔记(四)

Nodejs用async来处理异步问题: 今天在写mysql数据库操作的时候,发现当我要查询多条sql语句的时候 前一条的语句在后一条语句执行完的时候还没有完成,这个导致很多语句的返回值都是unde...
  • zgq398749824
  • zgq398749824
  • 2016-05-31 13:54:47
  • 161

Python学习笔记之四——类型

类型和运算
  • Jeff_Liu_Sky
  • Jeff_Liu_Sky
  • 2016-08-27 15:26:10
  • 771

mmc子系统学习笔记四 mmc子系统的结构组织

从这一节起,我们正式进入mmc子系统学习笔记内容,这边walfred就根据自己的观点,整理了一份Linux下mmc子系统的结构组织框架,相信带着这个框架来理解学习mmc子系统应该会起到不错的效果。下面...
  • dzhj11
  • dzhj11
  • 2012-05-09 09:59:35
  • 955

Head First Java笔记(四)

图形用户接口 Swing
  • u013795673
  • u013795673
  • 2016-07-17 11:58:36
  • 243

Wcf Ria Services学习笔记(四):WCF RIA Service中的增删改查操作

            本篇以DataForm控件,来说明下Wcf Ria Service中的增删改查操作。利用DataForm控件还是比较方便的!直接贴代码了!using System; usin...
  • Joetao
  • Joetao
  • 2010-07-15 10:14:00
  • 5408

JVM学习笔记(三)——虚拟机字节码执行引擎

运行时栈结构 栈帧是虚拟机进行方法 调用和方法执行的数据结构。它是虚拟机栈的栈中元素。主要由以下四种信息:(1)局部变量表  (2)操作数栈  (3)动态链接  (4)方法返回地址栈帧的大小是在...
  • a2370889_com
  • a2370889_com
  • 2018-01-07 20:40:35
  • 54

System Generator学习笔记(四)

这一次学习的是如何将matlab工作区间的数据输入到simulink中。步骤如下: 在workspace定义数据结构,定义方式如下图所示 比如,定义一个正弦信号,时间是从1到101,这...
  • chevroletss
  • chevroletss
  • 2015-07-24 21:18:41
  • 1110

react-redux学习笔记

使用action创建函数封装逻辑是react与redux配合的最佳实践: - 当所有的逻辑都被转移到redux之后,react就可以只负责渲染界面并发起action创建函数了 Action...
  • u010582082
  • u010582082
  • 2017-07-07 11:34:07
  • 259

python学习(基础补充)--字典、条件语句、循环

#建立字典 items = [('name', 'hdb'), ('age', 42)] d = dict(items) print d #...
  • decan5958
  • decan5958
  • 2017-08-05 21:10:04
  • 115
收藏助手
不良信息举报
您举报文章:appium 学习笔记(四)
举报原因:
原因补充:

(最多只允许输入30个字)