uiautomator 2よくある位置決めエラーの問題
17078 ワード
uiautomator 2よくある位置決めエラーの問題は「ある要素が見つからない」とエラーを報告し、ソースコード が存在するかどうかを事前に判断する必要がある.複数のデバイスの接続を誤ると、どのデバイスが操作されているかを認識できない問題:adbコマンドを実行する場合、操作を認識する必要があるデバイス番号ソリューション: 機種によってクリックが必要な位置が異なることを報告しても、同じ位置決め位置の問題を見つけることができない:同じ位置決め位置が見つからず、機種カバーソリューションを実現できない:携帯電話システムの違いを利用して、 を的確に解決するメーカーに対して自動パッケージ化を誤報した場合(oppo/vivo)、「キャンセル」と「インストール」ボタンがあるため、コマンド「adb install」で直接インストールに成功できない問題:「adb install」が実行できない場合、同時にクリック操作ソリューションを実行する:スレッドを導入し、「adb install」を実行しながら、クリック操作 を実行する
u(text=" ").click()
の問題:クリックした後にページに反応時間を与えなかったため、すぐにある要素ソリューション1: import time
time.sleep(10) # 10s ,
u(text=" ").click()
ソリューション2: import time
u(text=" ").click(timeout=10) # 10s
の問題があるかどうかを判断した:この要素がないため、エラーが発生した.ソリューション3: time.sleep(5) # 5s “ ”
if u(text=" ").exists:
u(text=" ").click()
#
def attachDeviceList():
device_list = []
cmd_output = os.popen("adb devices", "r").read().split()[4:] # , 5 , ,['List', 'of', 'devices', 'attached', ' ', 'device']
for i in range(len(cmd_output)):
if i % 2 == 0:
device_list.append(cmd_output[i]) # device_list
if device_list:
print(device_list)
return device_list
else:
return print("No device found.")
if __name__ == '__main__':
try:
u = ut2.connect_usb()
while True:
for series in attachDeviceList():
print(" :", series)
# summary_start()
summary_start(series, u)
except Exception as e:
print(e)
system_version = os.popen("adb shell getprop ro.build.version.release", "r").read().rstrip()
if system_version in ['5.1']:
# 5.1 , ...
pass
elif system_version in ['6.0.1']:
# 6.0.1 , ...
pass
elif system_version in ['10']:
# 10 , ...
pass
# encoding: utf-8
import os
import threading
import time
# atx apk
def init_uiautomator2():
os.system("python -m uiautomator2 init")
time.sleep(5)
# ‘adb install ’
def install_apk(packagePath, series):
os.system("adb -s " + series + " install " + packagePath)
#
def click_apk(series, u):
u(text=" ").click(timeout=10)
time.sleep(5)
u(text=" ").click(timeout=10)
time.sleep(5)
# , ‘adb install ’,
def single_start(packagePath, series,u):
threads = [] # ,
t1 = threading.Thread(target=install_apk, args=[packagePath, series]) #
threads.append(t1)
t2 = threading.Thread(target=click_apk, args=[series, u])
threads.append(t2)
for t in threads: #
t.setDaemon(True)
t.start()
time.sleep(30)
if __name__ == '__main__':
init_uiautomator2()
u = ut2.connect_usb()
try:
while True:
for series in attachDeviceList():
print(" :", series)
single_start(packagePath, series, u)
except Exception as e:
print(e)