pythonandroid自动化测试仪器_使用Python进行Android自动化测试
下面我們開(kāi)始第一個(gè)簡(jiǎn)單的Android UI自動(dòng)化測(cè)試
1.使用adb命令連接真機(jī)或模擬器
2.打開(kāi)uiautomatorviewer工具
3.使用uiautomatorviewer工具獲取應(yīng)用的元素進(jìn)行定位
4.簡(jiǎn)單介紹unittest框架的使用方法
5.使用Python編寫(xiě)貓寧考勤應(yīng)用注冊(cè)模塊的自動(dòng)化測(cè)試
1.使用adb命令連接真機(jī)或模擬器:
手機(jī)USB連接電腦,進(jìn)入開(kāi)發(fā)者模式;
cmd命令:adb devices ,查看手機(jī)是否連接
顯示錯(cuò)誤
這是因?yàn)閍db的端口被占用,我們需要查看是什么應(yīng)用占用了這個(gè)端口(5037為adb默認(rèn)端口)
cmd命令 : netstat -aon|findstr “5037”
可以看到占用5037端口對(duì)應(yīng)的程序的PID號(hào)為8388;
cmd命令 : tasklist|findstr “8388”
可以看出8388對(duì)應(yīng)的程序?yàn)閗adb.exe,說(shuō)明該程序正在使用5037端口;
這時(shí)我們需要在任務(wù)管理器中結(jié)束kadb.exe進(jìn)程,按快捷鍵“Ctrl+Shift+Esc”調(diào)出Windows任務(wù)管理器,找到“kadb.exe”,單擊下方的結(jié)束進(jìn)程即可!
我們?cè)俅芜\(yùn)行cmd命令:adb devices
這一步成功后我們才能運(yùn)行sdk自帶的uiautomatorviewer;
我們需要用uiautomatorviewer工具來(lái)獲取元素,用于定位。
cmd命令:uiautomatorviewer,打開(kāi)uiautomatorviewer界面
或者找到sdk目錄:sdk\tools中找到uiautomatorviewer.bat文件雙擊運(yùn)行
2.打開(kāi)uiautomatorviewer工具
我們可以根據(jù)text,resource-id,class等元素進(jìn)行定位
3.使用uiautomatorviewer工具獲取應(yīng)用的元素進(jìn)行定位
這里我使用python自帶的IDLE進(jìn)行編寫(xiě)測(cè)試腳本,打開(kāi)python文件找到IDLE(python GUI)雙擊打開(kāi),如圖:
4.簡(jiǎn)單介紹unittest框架的使用方法
# -*- coding:utf-8 -*-
from uiautomator import device as d
import unittest
class Mytest(unittest.TestCase):
#初始化工作
def setUp(self):
print "--------------初始化工作"
#退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#測(cè)試點(diǎn)擊貓寧考勤case
def test_login(self):
d(text="貓寧考勤").click()
print "--------------測(cè)試1"
#測(cè)試2
def test_z(self):
print "--------------測(cè)試2" #這里你可以寫(xiě)你的第二個(gè)測(cè)試用例,
#測(cè)試3
def test_w(self):
print "--------------測(cè)試3" #這里你可以寫(xiě)你的第三個(gè)測(cè)試用例。。。。。。。。。。。。。
if __name__ == '__main__':
unittest.main()
結(jié)果如下:
Testing started at 21:14 …
————–初始化工作
————–測(cè)試1
————–退出清理工作
————–初始化工作
————–測(cè)試3
————–退出清理工作
————–初始化工作
————–測(cè)試2
————–退出清理工作
Process finished with exit code 0
從結(jié)果中我們可以看出unittest框架的運(yùn)行方式為:
setUp 測(cè)試1 tearDown
setUp 測(cè)試2 tearDown
setUp 測(cè)試3 tearDown
5.使用Python編寫(xiě)貓寧考勤應(yīng)用注冊(cè)模塊的自動(dòng)化測(cè)試
# -*- coding:utf-8 -*-
from uiautomator import device as d
import time
import unittest
class MyTestSuite(unittest.TestCase):
# 初始化工作
def setUp(self):
print "--------------初始化工作"
# 退出清理工作
def tearDown(self):
print "--------------退出清理工作"
#***************************方法**************************************
# 判斷控件是否存在 & text
def check_controls_exists(self, controls_text):
if d(text=controls_text).exists:
return 1
else:
return 0
# 判斷按鈕是否置灰 & text & clickable
def check_controls_click_text(self, controls_text):
if d(text=controls_text).info.get("clickable") is True:
return 1
else:
return 0
#assertIn(a, b) a in b
def check_ainb(self,resourceid,b):
if d(resourceId=resourceid).info.get("text") in b:
return 1
else:
return 0
#***********************************************************
# 注冊(cè)模塊
def test_Aregister(self):
try:
time.sleep(2)
#貓寧考勤開(kāi)啟全新時(shí)代
self.assertEqual(self.check_controls_click_text("注冊(cè)"),1,u"貓寧考勤開(kāi)啟全新時(shí)代")
# 貓寧考勤開(kāi)啟全新時(shí)代--》點(diǎn)擊注冊(cè)按鈕進(jìn)入注冊(cè)貓寧界面
d(text="注冊(cè)").click()
time.sleep(3)
#注冊(cè)貓寧界面
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_phone","請(qǐng)輸入手機(jī)號(hào)碼"),
1,u"注冊(cè)頁(yè)面-》請(qǐng)輸入手機(jī)號(hào)碼")
self.assertEqual(self.check_text("com.isentech.attendancet:id/regis_verifycode","請(qǐng)輸入驗(yàn)證碼"),
1,u"注冊(cè)頁(yè)面-》請(qǐng)輸入驗(yàn)證碼")
self.assertEqual(self.check_controls_click_text("獲取驗(yàn)證碼"), 0,u"注冊(cè)頁(yè)面-》獲取驗(yàn)證碼")
self.assertEqual(self.check_controls_click_text("《中科愛(ài)訊服務(wù)協(xié)議》"), 1,u"注冊(cè)頁(yè)面-》《中科愛(ài)訊服務(wù)協(xié)議》")
self.assertEqual(self.check_controls_click_text("注冊(cè)"), 0,u"注冊(cè)頁(yè)面-》注冊(cè)")
time.sleep(2)
#《中科愛(ài)訊服務(wù)協(xié)議》
d(text="《中科愛(ài)訊服務(wù)協(xié)議》").click()
time.sleep(2)
self.assertEqual(self.check_ainb("com.isentech.attendancet:id/title","服務(wù)協(xié)議"), 1,u"注冊(cè)頁(yè)面-》服務(wù)協(xié)議")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/title_back").click()
time.sleep(1)
#手機(jī)號(hào)不輸入是否能注冊(cè)
d(text="注冊(cè)").click()
time.sleep(3)
# 手機(jī)號(hào)只輸入1個(gè)數(shù)字是否能注冊(cè)&只輸入1個(gè)數(shù)字是否能獲取驗(yàn)證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("1")
self.assertEqual(self.check_controls_click_text("獲取驗(yàn)證碼"), 0)
time.sleep(1)
d(text="注冊(cè)").click()
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入5個(gè)數(shù)字是否能獲取驗(yàn)證碼
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text("11111")
self.assertEqual(self.check_controls_click_text("獲取驗(yàn)證碼"), 0)
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_phone").clear_text()
time.sleep(1)
#只輸入手機(jī)號(hào)是否能注冊(cè)
d(resourceId="com.isentech.attendancet:id/regis_phone").set_text(phone_number)
self.assertEqual(self.check_controls_click_text("注冊(cè)"), 0)
time.sleep(1)
d(text="注冊(cè)").click()
time.sleep(1)
#輸入正確的驗(yàn)證碼&獲取驗(yàn)證碼是否高亮
d(resourceId="com.isentech.attendancet:id/regis_verifycode").set_text("5648")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("獲取驗(yàn)證碼"), 1)
time.sleep(2)
#密碼只輸入1個(gè)數(shù)字是否能注冊(cè)&注冊(cè)按鈕是否高亮
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("1")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("1")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊(cè)"), 0,u"密碼只輸入1個(gè)數(shù)字是否能注冊(cè)")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入不相同的密碼是否能注冊(cè)
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("12345")
time.sleep(1)
self.assertEqual(self.check_controls_click_text("注冊(cè)"), 0,u"輸入不相同的密碼是否能注冊(cè)")
time.sleep(1)
d(resourceId="com.isentech.attendancet:id/regis_pass").clear_text()
d(resourceId="com.isentech.attendancet:id/regis_passAgain").clear_text()
time.sleep(1)
#輸入正確的密碼是否能注冊(cè)&我已同意是否打鉤
d(resourceId="com.isentech.attendancet:id/regis_pass").set_text("123456")
d(resourceId="com.isentech.attendancet:id/regis_passAgain").set_text("123456")
time.sleep(1)
self.assertEqual(self.check_controls_click_resourceId("com.isentech.attendancet:id/regis_agree"), 1)
self.assertEqual(self.check_controls_click_text("注冊(cè)"), 1)
time.sleep(2)
d(text="注冊(cè)").click()
time.sleep(8)
except Exception, e:
print u"Error: 注冊(cè)模塊有問(wèn)題\n", e
def test_app():
test_unit = unittest.TestSuite()
test_unit.addTest(MyTestSuite("test_Aregister"))
if __name__ == "__main__":
# 測(cè)試app
unittest.main()
看完點(diǎn)贊關(guān)注~~養(yǎng)成好習(xí)慣~
總結(jié)
以上是生活随笔為你收集整理的pythonandroid自动化测试仪器_使用Python进行Android自动化测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP代码审计——2、PHP代码审计之P
- 下一篇: python 支持向量机 导出参数_SV