Bluestacks в/c BAS



  • Можно ли как-то реализовать работу баса с эмулятором андроид, хочу замутить работу аккаунтов тик-ток в накрутке (как по мне, звучит безумно, но лучше спрошу)?



  • @zololk1s, нет
    1c89bd53-c8b3-4e11-9b50-3bc82cfc4fc8-image.png



  • можно через adb



  • Я автоматизировал сбор бонусов в игре не андроид через Bluestacks с использованием языка программирования python и его замечаметельной библиотеки pyautogui
    Суть такая что скрипт ожидал появление не которых кнопок и потом жал на них и так по кругу.



  • @gomeapat они все работают через adb



  • @UserTrue said in Bluestacks в/c BAS:

    adb

    А встречал кто-нибудь обертку над adb, чтобы кликать можно было нормально по xpath? Пробовал делать автокликер на Memu - в принципе работает, но часто не ждет элемента (логики в нем нет), а надо часто ожидать, отсюда ошибки



  • Вот мой код на python тут все с проверкой присутствия и задержками на ожидания
    но тут нужно понимать язык программирования python

    from 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 и настраивать переменные окружения, может еще что-то, но мне было лень это проделывать каждый раз ))



  • @gomeapat Спасибо. А как это использовать в контексте BAS? Как отлаживать сценарий и клики?

    Мое нубское видение - я должен открыть где-то на 127.0.0.1 обертку в браузере и там увидеть android. И потом уже кликать. @UserTrue, вы такое написали? Через браузер?



  • @seoshnek said in Bluestacks в/c BAS:

    Мое нубское видение - я должен открыть где-то на 127.0.0.1 обертку в браузере и там увидеть android. И потом уже кликать. @UserTrue, вы такое написали? Через браузер?

    Нет конечно, из коробки нет ничего такого. Все кодом и головой ) Утилита adb позволяет взаимодействовать с андроидом, uiautomatorviewer утилита которая позволяет находить координаты нужных элементов, по xpath в том числе.




Log in to reply
 

  • 3
  • 4
  • 3
  • 5
  • 3
  • 2
  • 4
  • 2