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

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

  1. kul0n

    kul0n Client

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

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    16
    Likes Received:
    4
    У меня такой способ.
    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:
    18
    Likes Received:
    1
    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:
    16
    Likes Received:
    4
    нет, в батнике-мне так удобнее
     
  5. kul0n

    kul0n Client

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

    kul0n Client

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

    lybimiy86 Client

    Joined:
    Oct 29, 2016
    Messages:
    16
    Likes Received:
    4
    Проверку на капчу можно сделать через 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:
    18
    Likes Received:
    1
    Ок, спасибо за помощь, буду пробовать
     

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