Добавил еще ведущие нули к миллисекундам, если кому-то еще когда-то этот код понадобится
log = function (text, color, define){ var id, time, thread, logHtml, textLog; define = (typeof define == 'string') ? define.split(/[\s,.|:;]+/g) : define; if(typeof define === 'object' && define !== null){ if(Array.isArray(define)){ id = define.indexOf('id') > -1; time = define.indexOf('time') > -1; thread = define.indexOf('thread') > -1; } else{ id = define.id == true; time = define.time == true; thread = define.thread == true; } } else id = time = thread = true; id = id ? '<a href="action://action' + ScriptWorker.GetCurrentAction() + '" style="color:gray;">[' + ScriptWorker.GetCurrentAction() + ']</a>' : ''; time = time ? ' ' + getTime() : ''; thread = thread ? ' Поток №' + thread_number() : ''; logHtml = (id || time || thread) ? id + '<span style="color: white">' + time + thread + ' : </span>' : ''; logHtml += '<span style="color:' + (color ? color : 'white') + '">' + text + '</span>'; textLog = '[' + ScriptWorker.GetCurrentAction() + ']' + time + thread + ' : ' + text function getTime(){ var checkTime = function(i){ return (i < 10) ? "0" + i : i; }; var checkMilliSeconds = function(ms){ if (ms < 10) { return "00" + ms; } else if (ms < 100) { return "0" + ms; } else { return ms; } }; var d = new Date(); var hh = checkTime(d.getHours()); var mm = checkTime(d.getMinutes()); var ss = checkTime(d.getSeconds()); var ms = checkMilliSeconds(d.getMilliseconds()); return '[' + hh + ':' + mm + ':' + ss + '.' + ms + ']'; }; Logger.WriteHtml(logHtml, textLog); }Bluestacks в/c BAS
-
-
@UserTrue said in Bluestacks в/c BAS:
adb
А встречал кто-нибудь обертку над adb, чтобы кликать можно было нормально по xpath? Пробовал делать автокликер на Memu - в принципе работает, но часто не ждет элемента (логики в нем нет), а надо часто ожидать, отсюда ошибки
-
Вот мой код на python тут все с проверкой присутствия и задержками на ожидания
но тут нужно понимать язык программирования pythonfrom PIL import Image import imagehash import pyautogui import time import os pyautogui.FAILSAFE = False countFailFindCloseButton = 0 #pyautogui.click('close1.png') def checkGetFreeIsOpen(img): time.sleep(2) return pyautogui.locateOnScreen(img) def waitAds(): if(pyautogui.locateOnScreen('error.png')): checkButton('errorClose.png') checkButton('button.png') waitAds() else: time.sleep(1) if(checkGetFreeIsOpen('getFree.png')): print('Ожидаю начала показа показа рекламы') waitAds() return False else: print('Начался показ рекламы') watchAds(31) def checkButton(button): time.sleep(2) buttonlocation = pyautogui.locateOnScreen(button, grayscale=True, region=None, confidence=0.8) if(buttonlocation): buttonpoint = pyautogui.center(buttonlocation) pyautogui.click(buttonpoint) else: print('Кнопка '+button+' не найдена иду на другой заход') checkButton(button) def checkClose(button, top = 60): try: buttonlocation = pyautogui.locateOnScreen(button, grayscale=True, region=(0,top, 1920,250), confidence=0.9) except: print('Программа рухнула') watchAds(31) if(buttonlocation): buttonpoint = pyautogui.center(buttonlocation) pyautogui.click(buttonpoint) return True else: print('Кнопка '+button+' не найдена') return False def watchAds(sec): time.sleep(sec) if(checkCloseButtonPresent()): time.sleep(1) if(pyautogui.locateOnScreen('skip.png', confidence=0.8)): print('Обнаружено случайное прерывание первого типа') checkButton('skipButton.png') watchAds(31) elif(pyautogui.locateOnScreen('skip1.png', confidence=0.8)): print('Обнаружено случайное прерывание второго типа') checkButton('skipButton1.png') watchAds(31) else: time.sleep(1) checkCloseButtonPresent() start() else: myScreenshot = pyautogui.screenshot() myScreenshot.save('fail_find_close_button'+str(time.time())+'.png') print('Что пошло не по плану кнопка закрыть рекламу не была обнаружена') global countFailFindCloseButton if(countFailFindCloseButton > 2): #exit() if(checkClose('tabIcon.png', 0)): checkCloseButtonPresent() start() else: countFailFindCloseButton += 1 watchAds(5) def checkCloseButtonPresent(): path = './close' dir_list = os.listdir(path) for fileClose in dir_list: if(checkClose(path+'/'+fileClose)): return True return False #if(checkClose('./close/close1.png') or checkClose('./close/close2.png') or checkClose('./close/close3.png') or checkClose('./close/close4.png') or checkClose('./close/close5.png') or checkClose('./close/close6.png') or checkClose('./close/close7.png') or checkClose('./close/close8.png') or checkClose('./close/close9.png') or checkClose('./close/close10.png')): # return True #else: # return False def start(): if(checkGetFreeIsOpen('getFree.png')): checkButton('button.png') waitAds() else: print('Не обнаружена вкладка getFree начинаю все поновой') start() start()На сколько я помню там есть какие то программы которые позволяют делать примерно тоже что и этот мой код
т.е выпонять и поиск по экрану и задержку на ожидание и какие то еще действие
поисщи в гугле что типа
auto click , automatization click -
@seoshnek said in Bluestacks в/c BAS:
А встречал кто-нибудь обертку над adb,
Их куча разных на гитхабе, лично я писал свою. Есть еще большая библиотека называется appium, я ее не стал использовать тк там надо устанавливать Java и настраивать переменные окружения, может еще что-то, но мне было лень это проделывать каждый раз ))
-
-
@seoshnek said in Bluestacks в/c BAS:
Мое нубское видение - я должен открыть где-то на 127.0.0.1 обертку в браузере и там увидеть android. И потом уже кликать. @UserTrue, вы такое написали? Через браузер?
Нет конечно, из коробки нет ничего такого. Все кодом и головой ) Утилита adb позволяет взаимодействовать с андроидом, uiautomatorviewer утилита которая позволяет находить координаты нужных элементов, по xpath в том числе.
-
