Управление любыми Android приложениями на смартфоне из ZP

Discussion in 'Шестой конкурс статей' started by Serkser, Dec 11, 2016.

  1. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    Привет, как сохранить капчу на ПК?
     
    Last edited: Mar 21, 2017
  2. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    У меня такой способ.
    1.Получаем через adb скрин экрана:
    2.Обработка изображений->обрезка, там опытным путем или измеряем кусок картинки с капчей и сохраняем в другой файл уже готовую капчу
    [​IMG]
    3.Через C# отправляем капчу(файл с картинкой):
    Code (text):
    1. var captha_tel = project.Variables["captha_tel"].Value;
    2. var image = System.Drawing.Image.FromFile("D:\\Dropbox\\ZennoPoster\\Project\\Aliexpress_qr_tel_shop\\captcha.png");
    3. string base64String = String.Empty;
    4. using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    5. {
    6.     image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    7.     byte[] imageBytes = ms.ToArray();
    8.     base64String = Convert.ToBase64String(imageBytes);
    9. }
    10. var result = ZennoPoster.CaptchaRecognition("Rucaptcha.dll", base64String, "");
    11. // отрезаем лишнее
    12. var tmp = result.Split(new [] {"-|-"}, StringSplitOptions.None);
    13. if (tmp.Length > 1) return tmp[0];
    14. return result;
     
  3. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    adb shell screencap -p /sdcard/screen.png
    adb pull /sdcard/screen.png D:\Dropbox\ZennoPoster\Project\Aliexpress_qr_tel_shop
    adb shell rm /sdcard/screen.png

    А эти строки прописаны в одном снипете вместе с командами управления телом?
     
  4. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    нет, в батнике-мне так удобнее
     
  5. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    Ок, но допустим я запустил снипет управления телом, дошел до разгадывания капчи, разгадал, получил ответ, но как мне потом вернутся опять к управлению телом? этого не могу понять
     
  6. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    снипет управления телом отработал и я не могу опять вернутся на этап разгадывания капчи
     
  7. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    Проверку на капчу можно сделать через if else
    Code (text):
    1. if (driver.FindElementsByXPath("//android.widget.EditText[contains(@resource-id, 'et_verification_code')]").Count>0)
    2. {
    3.     project.Variables["captha_tel_yes_no"].Value = "yes";
    4. }
    5. else
    6. {
    7.     project.Variables["captha_tel_yes_no"].Value = "no";
    8. }
    После прерывания работы скрипта, чтоб не потерять текущее состояние, я делаю так:
    1.Нужное приложение должно быть на рабочем столе
    2.Затем запускаю appium с activity рабочего стола, например для NovaLauncher как у меня:
    Code (text):
    1. cap.SetCapability("appPackage", "com.teslacoilsw.launcher");
    2. cap.SetCapability("appActivity", "com.teslacoilsw.launcher.NovaLauncher");
    3.Ну и стандартно уже через appium кликаю по приложению в итоге все загружается без потери прогресса.
    Appium нельзя запускать без activity вообще - вычитал на иностранных форумах.
     
    kul0n likes this.
  8. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    Ок, спасибо за помощь, буду пробовать
     
  9. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    [​IMG]
    список пуст почему то
     
  10. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    instacash likes this.
  11. Kare

    Kare Client

    Joined:
    Dec 23, 2014
    Messages:
    187
    Likes Received:
    78
    У NOXа свой ADB.
     
    instacash likes this.
  12. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    [​IMG]

    resours-id , нету ,что делать?
     
  13. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    Попробуй
    Code (text):
    1. driver.FindElement(By.XPath("//android.widget.FrameLayout[@content-desc='Сообщение']")).Click();
     
    Last edited: Mar 30, 2017
  14. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    обновил ведро , щас все поехало :ak:
    [​IMG]
     
  15. SteveJobs

    SteveJobs Client

    Joined:
    Nov 3, 2016
    Messages:
    141
    Likes Received:
    5
    Как кликнуть сюда "Зарегистрируйтесь", подскажите плз. И какой activity нужно ставить на этой странице?
    1233.jpg
     
  16. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    Ты выбрал блок с данными, кликни на надпись Регистрация
     
  17. SteveJobs

    SteveJobs Client

    Joined:
    Nov 3, 2016
    Messages:
    141
    Likes Received:
    5
    где? я кликнул как раз на него же, другого там не дано
     
  18. kul0n

    kul0n Client

    Joined:
    Mar 10, 2016
    Messages:
    31
    Likes Received:
    2
    попробуй по resource-id кликнуть, в самой статье вроде есть пример
     
  19. Webimbo

    Webimbo Client

    Joined:
    Jun 3, 2014
    Messages:
    76
    Likes Received:
    4
    Доброго дня! Клик с удержанием не подскажете как реализовать, который необходим для вызова контекстного меню в некоторых приложениях?
     
  20. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    Решил кто нить с многопоточностью?Если они серв поднять и 3 тел подсоединить работать не будет, нужно на каждый тел поднимать серв?
     
  21. SteveJobs

    SteveJobs Client

    Joined:
    Nov 3, 2016
    Messages:
    141
    Likes Received:
    5
    так и нажимал, просто активити другой нужен был, разобрался
     
  22. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    На каждый экземпляр устройства/эмулятора поднимаем сервер.
    Adb команды тоже разделяем. Сначала смотрим серийный_номер через команду adb devices и посылаем команды на устройства
    Code (text):
    1. adb -s серийный_номер команда
     
  23. ol1ver

    ol1ver Client

    Joined:
    Aug 29, 2013
    Messages:
    291
    Likes Received:
    59
    cильно!
     
  24. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    а в дальнейшем , нужно будет шаблон в многопотоке запускать или нет?
     
  25. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
    Наверное лучше и удобнее будет вывести настройки серверов и серийные номера во входные настройки шаблона ну и в шаблоне по переменным все разнести
     
  26. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    То есть
    Code (text):
    1. --selendroid-port 8082
    разные порты или при инициализации?
    Code (text):
    1. AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);
     
  27. instacash

    instacash Client

    Joined:
    Dec 22, 2016
    Messages:
    44
    Likes Received:
    4
    [​IMG]

    и как сделать конект к конкретному устройству
     
  28. lybimiy86

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    69
    Likes Received:
    40
  29. desided

    desided Client

    Joined:
    Oct 19, 2015
    Messages:
    117
    Likes Received:
    9
    были ли у кого проблемы с работой на виртуалках?
    не могу приконектится к аппиуму через код, через стандартный порт не хочет, подскажите у кого подобное было
    вм черер vmware
     
  30. Webimbo

    Webimbo Client

    Joined:
    Jun 3, 2014
    Messages:
    76
    Likes Received:
    4
    смотри в диспетчере задач, в мониторе ресурсов во вкладке сеть какие порты использует виртуалка.
     

Пользователи просматривающие тему (Пользователей: 0, Гостей: 0)