MasterGH Опубликовано 28 июня, 2018 Поделиться Опубликовано 28 июня, 2018 Версия Python 3.5.3 В Python плохо шарю. Ищу варианты написания сопрограмм и предлагаю желающим помочь мне с кодом на Python Исходник Спойлер # -*- encoding=utf8 -*- __author__ = "gzliuxin" __title__ = "test script title" __desc__ = """ this is a test script. """ # install demo apk PKG = "com.NetEase.PocoDemo" if PKG not in device().list_app(): import os path = os.path.join(args.script, "poco-demo.apk") device().install_app(path) # restart app stop_app(PKG) start_app(PKG) wait(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080))) # init UnityPoco from poco.drivers.unity3d import UnityPoco poco = UnityPoco() poco(text="Start").click() poco(text="basic").click() # assert empty result = poco(type="Text", name="Text").get_text() assert_equal(bool(result), False) # input text poco(type="InputField").set_text("Hello World") sleep(1.0) # assert text result = poco(type="Text", name="Text").get_text() assert_equal(result, "Hello World") poco(text="Back").click() Вопрос1. Как выполнять отдельной сопрограммой код ниже или любой другой на Python 3.5.3? wait(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080))) if exists(Template(file:///C:/AirtestIDE/Scripts Poco/unitydemo.air/tpl1522812811402.png, record_pos=(0.001, -0.084), resolution=(1920, 1080))): poco(text="Start").click() Попытка из Гугла Спойлер import asyncio @asyncio.coroutine def hello_world(): print("Hello World!") loop = asyncio.get_event_loop() # Blocking call which returns when the hello_world() coroutine is done loop.run_until_complete(hello_world()) loop.close() Ошибка с импортом модуля: Спойлер Вопрос2. Как импортировать этот модуль? Или через другой код сопрограмм Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 28 июня, 2018 Поделиться Опубликовано 28 июня, 2018 @MasterGH Привет. Запусти, пожалуйста, следующий код, чтобы узнать версию твоего питона: import sys print(sys.version) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 28 июня, 2018 Автор Поделиться Опубликовано 28 июня, 2018 @srg91 Привет. Запустил. Логи Спойлер Цитата [Start running..] do not connect device save log in 'C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40' [12:09:22][DEBUG]<airtest.core.android.adb> C:\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe devices [12:09:22][DEBUG]<airtest.core.android.adb> C:\AirtestIDE\airtest\core\android\static\adb\windows\adb.exe devices 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)] ---------------------------------------------------------------------- Ran 1 test in 0.303s OK [Finished] Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 28 июня, 2018 Поделиться Опубликовано 28 июня, 2018 15 минут назад, MasterGH сказал: @srg91 Привет. Запустил. Логи Не очень понимаю как ты запускаешь. Ты не мог бы найти команду, которой запускается твой скрипт? Можно попробовать сделать что-то подобное: import sys raise Exception(sys.executable) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 28 июня, 2018 Автор Поделиться Опубликовано 28 июня, 2018 Команду я не знаю как найти. Запуск через кнопку, как обычно. Скриншот Спойлер Ответить смогу только завтра, надо отойти Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 28 июня, 2018 Поделиться Опубликовано 28 июня, 2018 4 минуты назад, MasterGH сказал: Команду я не знаю как найти. Запуск через кнопку, как обычно. Скриншот Ответить смогу только завтра, надо отойти Можно попробовать вот так запустить, тогда он почти точно выведет что запускается: import sys message = 'Executable: {}\nVersion: {}'.format(sys.executable, sys.version) raise Exception(message) Единственное, судя по всему это некий встраиваемый питон, я не уверен что у него будут доступны все модули, которые имеет оригинальный. Поэтому возможно он просто не поддерживает корутины. Напомни, пожалуйста, где взять приложение через которое ты запускаешь? Чтобы можно было руками потыкать. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 июня, 2018 Автор Поделиться Опубликовано 29 июня, 2018 18 часов назад, srg91 сказал: Напомни, пожалуйста, где взять приложение через которое ты запускаешь? Есть версия и под Mac (последняя 0.1.3) Спойлер http://airtest.netease.com/changelog.html Запустил import sys message = 'Executable: {}\nVersion: {}'.format(sys.executable, sys.version) raise Exception(message) Результат Спойлер Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 29 июня, 2018 Поделиться Опубликовано 29 июня, 2018 8 минут назад, MasterGH сказал: Запустил Да, супер, отработало как нужно - версия запускаемого питона - 3.5.3; В общем запускает его сам AirtestIDE, но как я и говорил встроенный в него Python не умеет в asyncio (но я не разбирался подробно, возможно я не прав). Да и рекоммендуют они использовать синтаксис Python 2.7: http://airtest.netease.com/docs/docs_AirtestIDE-en_US/3_faq/script_related_faqs.html?highlight=python#which-python-version-is-supported Но! Насколько я вижу по тому что FAQ, можно запускать скрипты через отдельно установленный Python: http://airtest.netease.com/docs/docs_AirtestIDE-en_US/3_faq/script_related_faqs.html?highlight=python#how-to-use-a-command-line-to-run-a-script http://airtest.netease.com/docs/docs_AirtestIDE-en_US/1_online_help/before_you_start.html?highlight=python Поэтому можно попробовать поставить обычный Python, проверить что в нём работает asyncio, доустановить нужные AirtestIDE модули и указать его как основной для AirtestIDE. Если ты готов, то можем попробовать сделать это так ) 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 29 июня, 2018 Автор Поделиться Опубликовано 29 июня, 2018 4 часа назад, srg91 сказал: Поэтому можно попробовать поставить обычный Python, проверить что в нём работает asyncio, доустановить нужные AirtestIDE модули и указать его как основной для AirtestIDE. Поставил. Логи Спойлер Спойлер "C:\AirtestIDE\AirtestIDE" runner "C:\AirtestIDE\Scripts Poco\DELETE.air" --log "C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40" ============================================================ [Start running..] add sys.path: ['C:\\Python27\\Lib'] do not connect device save log in 'C:\Users\Andrew\AppData\Local\Temp\AirtestIDE\scripts\85cd626315484cdf6cffe357149cae40' ====================================================================== [Finished] ERROR: setUpClass (app.widgets.code_runner.ide_launcher.AirtestIDECase) ---------------------------------------------------------------------- Traceback (most recent call last): File "airtest\cli\runner.py", line 28, in setUpClass File "airtest\cli\runner.py", line 133, in setup_by_args File "airtest\core\api.py", line 105, in auto_setup File "airtest\core\api.py", line 62, in connect_device File "airtest\core\api.py", line 31, in init_device File "airtest\core\helper.py", line 108, in import_device_cls File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\core\android\android.py", line 10, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\core\android\ime.py", line 3, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\core\android\yosemite.py", line 3, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\utils\apkparser\__init__.py", line 1, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\utils\apkparser\apk.py", line 20, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "airtest\utils\apkparser\axmlprinter.py", line 23, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "xml\sax\saxutils.py", line 6, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "urllib\request.py", line 88, in <module> File "<frozen importlib._bootstrap>", line 969, in _find_and_load File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 673, in _load_unlocked File "e:\project\idepy3\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 631, in exec_module File "http\client.py", line 1218, in <module> File "C:\Python27\Lib\ssl.py", line 134 except socket_error, e: ^ SyntaxError: invalid syntax ---------------------------------------------------------------------- Ran 0 tests in 0.060s FAILED (errors=1) ============================================================ Я думаю мы с этой проблемой очень много времени и сил потратим. По этому забьем. Я думаю, сделаю свою функцию ожидания распознавания картинки и в ней впишу try/catch и проверку на картинки случайных диалогов. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения