Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Привет всем! Аппиум требует API 17 версии, а это уже андроид 4.2+, но у меня на мобиле посделняя доступная версия андрюхи это 4.1.2. Собственно как заставить работать аппиум с версии API 16 ? Заранее спс за совет !
Привет всем! Аппиум требует API 17 версии, а это уже андроид 4.2+, но у меня на мобиле посделняя доступная версия андрюхи это 4.1.2. Собственно как заставить работать аппиум с версии API 16 ? Заранее спс за совет !
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.1.2");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.setCapability("automationName", "Selendroid");
cap.SetCapability("appPackage", "com.google.android.gsf.login"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".AccountIntroUIActivity"); // активное окно
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap); // и
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.1.2");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.setCapability("automationName", "Selendroid");
cap.SetCapability("appPackage", "com.google.android.gsf.login"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".AccountIntroUIActivity"); // активное окно
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap); // и
Тип Время Сообщение
17:57:48 Выполнение действия CSharp OwnCode The HTTP request to the remote WebDriver server for URL http://127.0.0.1:4723/wd/hub/session timed out after 60 seconds.
Спасибо за хорошую статью. Возникло несколько вопросов:
1.При запуске Appium добавил ключ установки .apk, соответственно появилась задержка при запуске приложения и в логе ZennoPostera появилась ошибка в связи с превышением таймаута
Пробовал добавить
Код:
cap.setCapability("newCommandTimeout","180");
Выдает:
Добавление в запуск Appium ключа --command-timeout не помогает
Вопрос: как увеличить таймаут?
2.Как напечатать не текст, а содержание переменной? К примеру взять со списка логин,пароль, поместить их в переменную и напечатать в нужные поля. РЕШЕНО. СпасибоKare
Код:
var text = project.Variables["email"].Value;
driver.FindElementByXPath("//android.widget.EditText[contains(@text, 'Адрес эл. почты')]").SendKeys(project.Variables["email"].Value);
3.Как взять Text с resource-id и записать его в файл/таблицу?
4.Как реализовать логику? К примеру если найден один элемент-делаем одно действие, если другой элемент-другое действие.
5.При ожидании элемента, если не находит его, то все останавливается, как сделать, чтоб логика при превышении wait продолжала дальше отрабатывать?
6.Что нужно доработать, чтоб установка приложений работала?
Добавляю код:
Что значит не помогло?
Читай в логе написано:
info: [debug] Setting command timeout to 180 secs
Значит команда сработала.
А вылетает у тебя потому, что ты команды следующей не даешь в течении определенного времени, или возможно элемент у тебя не может найтись в течении 60секунд, если установлено ожидание на поиск элементов.
Что значит не помогло?
Читай в логе написано:
info: [debug] Setting command timeout to 180 secs
Значит команда сработала.
А вылетает у тебя потому, что ты команды следующей не даешь в течении определенного времени, или возможно элемент у тебя не может найтись в течении 60секунд, если установлено ожидание на поиск элементов.
var text = project.Variables["email"].Value;
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("newCommandTimeout","180");
cap.SetCapability("deviceName", "Aliexpress"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "6.0.1");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.SetCapability("appPackage", "com.alibaba.aliexpresshd");
cap.SetCapability("appActivity", "com.alibaba.aliexpresshd.module.home.MainActivity");
cap.SetCapability("unicodeKeyboard", "true");
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap); // инициализируем экземпляр класса драйвера с настроечками
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(180));
driver.FindElementByXPath("//android.widget.Button[contains(@resource-id, 'button1')]").Click();
Помоги с другими вопросами пожалуйста. Если с 6 вопросом разобраться, то необходимость в установке приложения через AppiumStart пропадет
Пробую начать управлять приложением на эмуляторе Memu. Установил все пакеты по инструкции. Хочу узнать appPackage и аppActivity, пишу в командной строке соответствующую командуи ничего не получаю... подскажите, что делаю не так
Пробую начать управлять приложением на эмуляторе Memu. Установил все пакеты по инструкции. Хочу узнать appPackage и аppActivity, пишу в командной строке соответствующую командуи ничего не получаю... подскажите, что делаю не так
ты не добавил adb в переменные среды. Либо по этой инструкции: http://www.software-testing-tutoria.../09/set-androidhome-and-path-environment.html
Либо добавляй к команде путь к adb,но лучше 1 способ на будущее.
3 Вариант узнать appPackage и аppActivity это установить с playmarket Activity Launcher, но чтоб работала вся схема, все равно лучше 1 пункт для начала
Команда сработала, однако сами девайсы не обнаруживаются. Поделитесь опытом, кто управлял эмулятором, какой эмулятор использовали, в чем отличия от классической схемы?
Команда сработала, однако сами девайсы не обнаруживаются. Поделитесь опытом, кто управлял эмулятором, какой эмулятор использовали, в чем отличия от классической схемы?
Стандартный эмулятор от андройд - слишком тормозной.
Последний Bluestacks - в бесплатной версии время от времени просит установить пару рекомендуемых программ.
Многие и я в том числе, рекомендуют Gennymotion.
Другие эмуляторы не тестировал.
Появились такие вопросы:
Необходимо ввести капчу в приложении.
Код для отправки я нашел, вопрос: как получить эту картинку на пк?
Пока решил костылем: через adb получаю скриншот, кубиком обрезаю капчу и отправляю на распознавание.
Еще вопрос, в ходе работы нужно переключаться с телефона на работу в zennoposter, соответственно когда второй раз запустим скрипт-он открывает активити, который указан в настройке. Как запустить скрипт, чтоб он продолжил работу,а не перезагружал текущее состояние? Сервер я не останавливаю, увеличил ожидание команды через --command-timeout может есть какой-то способ подключиться к этой сессии?
Пока костыль: открываем новый сеанс с активити рабочего стола, потом возвращаемся к состоянию текущему через ярлык
Ну и подскажите наконец уже как составить конструкцию из if else. Помогите с синтаксисом
if driver.FindElementByXPath("//android.widget.EditText[contains(@text, 'identifying code')]")
делаем что-то
else Решение: Использовать FindElements и .Count>0). Пример:
if (driver.FindElementsByXPath("//android.widget.ImageButton[contains(@resource-id, 'left_action')]").Count>0)
Команда сработала, однако сами девайсы не обнаруживаются. Поделитесь опытом, кто управлял эмулятором, какой эмулятор использовали, в чем отличия от классической схемы?
Про Nox писали выше,что там с adb намудрено, вроде как работать не будет.
Koplayer - стабильный эмулятор, но оперативки жрет много. Не устанавливается доп.рекламных приложений.
Gennymotion - за счет эмуляции многих устройств из коробки наверное самый лучший,но у меня иногда ошибки сыпались, и рекламные проги загружались.
Эмуль Android x86 шляпа - долго включается и медленно работает и на virtualbox и на vmare.
Вариант не с эмулем. Телефон с CM 13 на борту + xprivacy = много разных устройств на телефоне за счет эмуляции параметров (xprivacy за это отвечает) и создание нового пользователя возможностями самого CM. У меня этот вариант, потому что проги палят сейчас все подряд и эмули хрен спрячешь, кстати поэтому считаю ZennoDroid не конкурентным абсолютно.
Коллеги, обращаюсь к Вам, кто разобрался в данной теме и способен автоматизировать все что-то угодно на андроиде и владеет хорошими навыками кодинга на C# или java. Есть большой интересный проект, ищу исполнителя, кому интересно пишите в ЛС.
Вариант не с эмулем. Телефон с CM 13 на борту + xprivacy = много разных устройств на телефоне за счет эмуляции параметров (xprivacy за это отвечает) и создание нового пользователя возможностями самого CM. У меня этот вариант, потому что проги палят сейчас все подряд и эмули хрен спрячешь, кстати поэтому считаю ZennoDroid не конкурентным абсолютно.
Не говорю, что именно он лучше всех, но с ним не возникает косяков, к примеру неделю назад в скайпе у меня спросили, почему команда adb, которую я давал (по одному проекту) adb shell svc data disable выдает ошибку с ограничением прав, adb root тоже не помогало, в настройках разработчика тоже небыло пункта о присвоении прав root. Вообщем он целую неделю ковырял свою прошивку,в итоге сегодня прошился на cm и все у него заработало из коробки. CM необязательно 13, просто для моего устройства и для многих других на 6 андроиде - это последний. Внутри телефона почти все можно реализовать через adb команды, автоматизация нужна внутри приложения, appium одно из решений.
Такая же проблема, не могу понять, как ее исправить.
Использую этот код:
Код:
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.1.1");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.SetCapability("automationName", "Selendroid");
cap.SetCapability("appPackage", "com.instagram.android"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".activity.MainTabActivity"); // активное окно
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap); // инициализируем экземпляр класса драйвера с настроечками
info: --> POST /wd/hub/session {"desiredCapabilities":{"deviceName":"Insta","platformVersion":"4.1.1","platformName":"Android","automationName":"Selendroid","appPackage":"com.instagram.android","appActivity":".activity.MainTabActivity"}}
info: Client User-Agent string: undefined
info: [debug] Didn't get app but did get Android package, will attempt to launch it on the device
info: [debug] Creating new appium session 5d7e0022-4399-48cd-a70d-7bb11980c0f4
info: [debug] Starting selendroid server
info: [debug] Getting Java version
info: Java version is: 1.8.0_121
info: [debug] Checking whether adb is present
info: [debug] Using adb from C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe
info: [debug] Checking whether selendroid is built yet
info: [debug] Selendroid server exists!
info: [debug] Using fast reset? false
info: [debug] Preparing device for session
info: [debug] Not checking whether app is present since we are assuming it's already on the device
info: Retrieving device
info: [debug] Trying to find a connected android device
info: [debug] Getting connected devices...
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe devices
info: [debug] 2 device(s) connected
info: Found device L7AAN7SONJGECYZP
info: [debug] Setting device id to L7AAN7SONJGECYZP
info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5)
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe -s L7AAN7SONJGECYZP wait-for-device
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe -s L7AAN7SONJGECYZP shell "echo 'ready'"
info: [debug] Starting logcat capture
info: [debug] Checking whether aapt is present
info: [debug] Using aapt from C:\Users\Eduard\AppData\Local\Android\android-sdk\build-tools\25.0.2\aapt.exe
info: [debug] Checking if has internet permission from manifest.
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\build-tools\25.0.2\aapt.exe dump badging
warn: ERROR: no dump file specified
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:1664:19
at ChildProcess.exithandler (child_process.js:641:7)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:743:16)
at Process.ChildProcess._handle.onexit (child_process.js:810:5)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified\r\n)","origValue":"hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified\r\n"},"sessionId":null}
info: <-- POST /wd/hub/session 500 466.431 ms - 318
Такая же проблема, не могу понять, как ее исправить.
Использую этот код:
Код:
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.1.1");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.SetCapability("automationName", "Selendroid");
cap.SetCapability("appPackage", "com.instagram.android"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".activity.MainTabActivity"); // активное окно
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap); // инициализируем экземпляр класса драйвера с настроечками
info: --> POST /wd/hub/session {"desiredCapabilities":{"deviceName":"Insta","platformVersion":"4.1.1","platformName":"Android","automationName":"Selendroid","appPackage":"com.instagram.android","appActivity":".activity.MainTabActivity"}}
info: Client User-Agent string: undefined
info: [debug] Didn't get app but did get Android package, will attempt to launch it on the device
info: [debug] Creating new appium session 5d7e0022-4399-48cd-a70d-7bb11980c0f4
info: [debug] Starting selendroid server
info: [debug] Getting Java version
info: Java version is: 1.8.0_121
info: [debug] Checking whether adb is present
info: [debug] Using adb from C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe
info: [debug] Checking whether selendroid is built yet
info: [debug] Selendroid server exists!
info: [debug] Using fast reset? false
info: [debug] Preparing device for session
info: [debug] Not checking whether app is present since we are assuming it's already on the device
info: Retrieving device
info: [debug] Trying to find a connected android device
info: [debug] Getting connected devices...
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe devices
info: [debug] 2 device(s) connected
info: Found device L7AAN7SONJGECYZP
info: [debug] Setting device id to L7AAN7SONJGECYZP
info: [debug] Waiting for device to be ready and to respond to shell commands (timeout = 5)
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe -s L7AAN7SONJGECYZP wait-for-device
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\platform-tools\adb.exe -s L7AAN7SONJGECYZP shell "echo 'ready'"
info: [debug] Starting logcat capture
info: [debug] Checking whether aapt is present
info: [debug] Using aapt from C:\Users\Eduard\AppData\Local\Android\android-sdk\build-tools\25.0.2\aapt.exe
info: [debug] Checking if has internet permission from manifest.
info: [debug] executing cmd: C:\Users\Eduard\AppData\Local\Android\android-sdk\build-tools\25.0.2\aapt.exe dump badging
warn: ERROR: no dump file specified
info: [debug] Cleaning up appium session
error: Failed to start an Appium session, err was: Error: hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified
at C:\Program Files (x86)\Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js:1664:19
at ChildProcess.exithandler (child_process.js:641:7)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:743:16)
at Process.ChildProcess._handle.onexit (child_process.js:810:5)
info: [debug] Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified\r\n)","origValue":"hasInternetPermissionFromManifest failed. Error: Command failed: ERROR: no dump file specified\r\n"},"sessionId":null}
info: <-- POST /wd/hub/session 500 466.431 ms - 318
Телефон с android версии 4.1, соответствует api 16 версии. Нужно вроде добавлять файл apk, чтобы Selendroid проверил, есть ли там разрешение на интернет, а как файл добавляю (" cap.SetCapability("app", "d:\\777.apk"); "), пишет что нужно api версии 17 (тестировал с apk Instagram). К тому же про Selendroid пишут, что управление ограничено рамками одной программы, значит еще целая куча неудобств в автоматизации. Похоже, что гораздо проще поменять телефон или пользоваться эмулятором.