[改進(jìn)型] python+uiautomator2 實(shí)現(xiàn) SOS 緊急號(hào)碼的添加

改進(jìn)內(nèi)容:從通訊錄選擇號(hào)碼,需判斷已有的號(hào)碼是否為空、5,然后再分別做處理。



# 實(shí)現(xiàn)需求:從通訊錄添加手機(jī)號(hào)碼,若存在舊的SOS號(hào)碼,先刪除再添加,若通訊錄中沒有號(hào)碼,需先新建。

import uiautomator2as u2

from timeimport sleep

import time

import random

distinct_devices ="H6ZPKR45DAB64DJB"

device = u2.connect(distinct_devices)

package ="com.njzx.shbsetting"

path ="E:\\pycharm\\run\\UiAutomator2\\F5\\SOS\\FromBookPic\\"

path_result ="E:\\pycharm\\run\\UiAutomator2\\F5\\SOS\\result\\"

now_time = time.strftime("%Y-%m-%d-%H-%M-%S")

#? 啟動(dòng)SOS應(yīng)用

def start_app():

device.screen_on()

device.app_start(package)

sleep(1)

#? 從通訊錄添加號(hào)碼并保存

def addTel_submit():

device(resourceId="com.njzx.shbsetting:id/layout_sos").click()

sleep(1)

#? 判斷是否存在舊的SOS號(hào)碼,若存在先刪除再添加

? ? count_elments = device(resourceId ="zte.shb.sossetting:id/number").count

print("已有的舊的SOS號(hào)碼個(gè)數(shù)為:"+str(count_elments) +"。\n稍后執(zhí)行刪除動(dòng)作!")

if count_elments !=0:

for iin range(0,count_elments):

device(resourceId="zte.shb.sossetting:id/delete").click()

device(resourceId="zte.shb.sossetting:id/btn_set").click()

print("刪除成功!")

getFromContactors()

device.press("home")

else:

getFromContactors()

device.press("home")

#? 從通訊錄選擇號(hào)碼:

list_name = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n"]

list_tel = ["1234","143536","5656565435","2344567","234455756","686778967","144354657",

"562789","90909090","6725111","6764535"]

def getFromContactors():

device(resourceId ="zte.shb.sossetting:id/add_from_contactors").click()

sleep(1)

#? 判斷有沒有聯(lián)系人,如果沒有,返回到聯(lián)系人應(yīng)用先新建聯(lián)系人 package = "com.android.dialer",然后添加

? ? none_elements = device(text ="您還沒有添加任何聯(lián)系人")

count_oldTel = device(resourceId ="com.android.contacts:id/cliv_name_textview").count

dialer_package ="com.android.dialer"

? ? #? 沒有可選號(hào)碼,需要新建5個(gè)

? ? if none_elements.exists:

device.app_start(dialer_package)

device(text ="通訊錄").click()#? 確保在聯(lián)系人界面

? ? ? ? sleep(1)

#? 判斷列表中:姓名列表的長度和號(hào)碼列表的長度和最多能夠添加多少個(gè)SOS號(hào)碼(也就是5)的大小,然后新建聯(lián)系人

? ? ? ? if len(list_name) >=5 and len(list_tel)>=5 :

for iin range(0,5):

print("直接選取5個(gè)號(hào)碼")

addNameAddTel()

elif len(list_name) <5 and len(list_tel) <=len(list_name):

for iin range(0,len(list_tel)):#? len(list_tel)

? ? ? ? ? ? ? ? print("以list_tel的長度作為全部號(hào)碼")

addNameAddTel()

elif len(list_tel) <5 and len(list_name) <=len(list_tel):

for iin range(0,len(list_name)):#? len(list_name)

? ? ? ? ? ? ? ? print("以list_name的長度作為全部號(hào)碼")

addNameAddTel()

elif len(list_name) >5 and len(list_tel)<5:

for iin range(0,len(list_tel)):#? len(list_tel)

? ? ? ? ? ? ? ? print("以list_tel的長度作全部號(hào)碼")

addNameAddTel()

elif len(list_tel)>5 and len(list_name)<5:

for iin range(0,len(list_name)):#? len(list_name)

? ? ? ? ? ? ? ? print("以list_name的長度作為全部號(hào)碼")

addNameAddTel()

#? 重新打開SOS,選擇已經(jīng)新建好的號(hào)碼:

? ? ? ? ContinueOpenSOSAndSelectTel()

#? 若存在5個(gè)聯(lián)系人,直接添加為SOS:

? ? elif count_oldTel? ==5:

selectTelFromContect()

sleep(3)

image = device.screenshot()

image.save(path_result + now_time +'.jpg')

#? 若存在小于5個(gè)聯(lián)系人,但不為0,刪除全部再新建至5個(gè):

? ? else:

print("目前已有的聯(lián)系人個(gè)數(shù):" +str(count_oldTel) +",稍后執(zhí)行刪除全部新增5個(gè)號(hào)碼操作!")

device.app_start(dialer_package)

device(text ="通訊錄").click()

sleep(1)

device(resourceId="com.android.dialer:id/zte_edit_contact").click()

device(text ="刪除聯(lián)系人").click()

device(text ="全 選").click()

device(text ="刪除").click()

device(text ="確定").click()

if len(list_name) >=5 and len(list_tel)>=5 :

for iin range(0,5):

print("直接選取5個(gè)號(hào)碼")

addNameAddTel()

elif len(list_name) <5 and len(list_tel) <=len(list_name):

for iin range(0,len(list_tel)):#? len(list_tel)

? ? ? ? ? ? ? ? print("以list_tel的長度作為全部號(hào)碼")

addNameAddTel()

elif len(list_tel) <5 and len(list_name) <=len(list_tel):

for iin range(0,len(list_name)):#? len(list_name)

? ? ? ? ? ? ? ? print("以list_name的長度作為全部號(hào)碼")

addNameAddTel()

elif len(list_name) >5 and len(list_tel)<5:

for iin range(0,len(list_tel)):#? len(list_tel)

? ? ? ? ? ? ? ? print("以list_tel的長度作全部號(hào)碼")

addNameAddTel()

elif len(list_tel)>5 and len(list_name)<5:

for iin range(0,len(list_name)):#? len(list_name)

? ? ? ? ? ? ? ? print("以list_name的長度作為全部號(hào)碼")

addNameAddTel()

#? 重新打開SOS,選擇已經(jīng)新建好的號(hào)碼:

? ? ? ? ContinueOpenSOSAndSelectTel()

#? 向聯(lián)系人中新建號(hào)碼

def addNameAddTel():

device(resourceId="com.android.dialer:id/zte_edit_contact").click()

device(text="添加聯(lián)系人").click()

sleep(1)

# 隨機(jī)選取一個(gè)姓名

? ? select_name = random.choice(list_name)

list_name.remove(select_name)# 姓名不重復(fù)

? ? print("本次隨機(jī)選擇的姓名是:" + select_name +"。\n稍后刪除" + select_name +",打印出剩余姓名!")

print(list_name)

device(text="姓名").click()

device(text="姓名").send_keys(select_name)

# 隨機(jī)選取一個(gè)號(hào)碼

? ? select_tel = random.choice(list_tel)

list_tel.remove(select_tel)# 號(hào)碼不重復(fù)

? ? print("本次隨機(jī)選擇的號(hào)碼是:" + select_tel +"。\n稍后刪除" + select_tel +",打印出剩余號(hào)碼!")

print(list_tel)

device(text="電話").click()

device(text="電話").send_keys(select_tel)

device(text="完成").click()

sleep(1)

device.press("back")

sleep(1)

#? 重新打開SOS應(yīng)用,選擇已經(jīng)新建好的號(hào)碼:

def ContinueOpenSOSAndSelectTel():

start_app()

device(resourceId="com.njzx.shbsetting:id/layout_sos").click()

sleep(1)

device(resourceId="zte.shb.sossetting:id/add_from_contactors").click()

sleep(1)

image = device.screenshot()

image.save(path + now_time +'.jpg')

sleep(1)

#? 從聯(lián)系人中隨機(jī)選擇SOS號(hào)碼并添加

? ? selectTelFromContect()

sleep(3)

image = device.screenshot()

image.save(path_result + now_time +'.jpg')

#? 從聯(lián)系人中隨機(jī)選擇SOS號(hào)碼并添加

sostel1 = device(resourceId ="com.android.contacts:id/cliv_name_textview",instance=0)

sostel2 = device(resourceId ="com.android.contacts:id/cliv_name_textview",instance=1)

sostel3 = device(resourceId ="com.android.contacts:id/cliv_name_textview",instance=2)

sostel4 = device(resourceId ="com.android.contacts:id/cliv_name_textview",instance=3)

sostel5 = device(resourceId ="com.android.contacts:id/cliv_name_textview",instance=4)

list_sosTel = [sostel1,sostel2,sostel3,sostel4,sostel5]

def selectTelFromContect():

count_sosTel = device(resourceId ="com.android.contacts:id/cliv_name_textview").count

print("可選擇作為SOS的號(hào)碼個(gè)數(shù):" +str(count_sosTel))

for iin range(0,count_sosTel):

selectFromsosTel = random.choice(list_sosTel)

selectFromsosTel.click()

list_sosTel.remove(selectFromsosTel)

print(list_sosTel)

device(text ="添加").click()

device(text ="從通訊錄中添加").click()

if __name__ =='__main__':

start_app()

addTel_submit()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容