python appium Android UI自动化测试从入门到放弃(四)

Android UI自动化实例

福利来了!!
文章开头介绍大家一个自动化的录制工具:Appium Studio
支持Android和iOS的应用UI自动化脚本录制,可以支持Java、C#、Python和Ruby四种语言的脚本导出。

一、脚本录制
1.1 连接设备

链接设备
效果图

1.2 启动录制

(1)录制测试App;
(2)录制结束后回放脚本;
(3)检查测试步骤
(4)保存测试脚本
(5)优化脚本
录制操作


脚本展示

import unittest
import time
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions


class Untitled(unittest.TestCase):
 reportDirectory = 'reports'
 reportFormat = 'xml'
 dc = {}
 testName = 'Untitled'
 driver = None
 
 def setUp(self):
   self.dc['reportDirectory'] = self.reportDirectory
   self.dc['reportFormat'] = self.reportFormat
   self.dc['testName'] = self.testName
   self.dc['udid'] = '0123456789ABCDEF'
   self.dc['platformName'] = 'android'
   self.driver = webdriver.Remote('http://localhost:4723/wd/hub',self.dc)
 
 def testUntitled(self):
   self.driver.find_element_by_xpath("xpath=//*[@text='计算器']").click()
   self.driver.find_element_by_xpath("xpath=//*[@id='clear' and @width>0]").click()
   WebDriverWait(self.driver, 30).until(expected_conditions.presence_of_element_located((By.XPATH,'//*[@id='digit1' and @width>0]')))
   self.driver.find_element_by_xpath("xpath=//*[@id='digit1' and @width>0]").click()
   self.driver.find_element_by_xpath("xpath=//*[@id='plus' and @width>0]").click()
   self.driver.find_element_by_xpath("xpath=//*[@id='digit1' and @width>0]").click()
   self.driver.find_element_by_xpath("xpath=//*[@id='equal' and @width>0]").click()
   self.driver.find_element_by_xpath("xpath=//*[@id='digit2' and @width>0]").click()
   self.driver.find_element_by_xpath("xpath=//*[@class='android.widget.EditText']").click()

 def tearDown(self):
         self.driver.quit()
         
 if __name__ == '__main__':
         unittest.main()

二、手写脚本
2.1 使用UIa Automator Viewer抓取元素
2.2 编写脚本,增加结果断言
# coding=utf-8
__author__ = 'king'

import unittest
from appium import webdriver


class Untitled(unittest.TestCase):

    def setUp(self):
        self.dc['udid'] = '0123456789ABCDEF'
        self.dc['deviceName'] = '1503-M02'
        self.dc['platformName'] = 'android'
        self.dc['appPackage'] = 'com.android.calculator2'
        self.dc['appActivity'] = '.Calculator'
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', self.dc)

    def testUntitled(self):
        # 清除
        self.driver.find_element_by_id("com.android.calculator2:id/clear").click()
        # 1+1=
        self.driver.find_element_by_id("com.android.calculator2:id/digit1").click()
        self.driver.find_element_by_id("com.android.calculator2:id/plus").click()
        self.driver.find_element_by_id("com.android.calculator2:id/digit1").click()
        self.driver.find_element_by_id("com.android.calculator2:id/equal").click()
        value = self.driver.find_elements_by_class_name("android.widget.EditText")[0].get_attribute("text")
        # 断言
        self.assertEqual('1+1\n=2', value, msg=None)

    def tearDown(self):
        self.driver.quit()


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

三、总结
  1. Appium Studio 目前不支持手动修改脚本,也没断言机制,工具比较简陋,适合新手玩玩就好了,录制的脚本元素只适合工具自用
  2. 自动化的用例必须加断言,使得用例具有意义,建议手动编写高可用的脚本
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值