日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

pythonandroid自动化测试仪器_使用Python进行Android自动化测试

發(fā)布時(shí)間:2023/12/19 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonandroid自动化测试仪器_使用Python进行Android自动化测试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

下面我們開(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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。