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

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Такая же проблема как и у многих - adb devices возвращает пустой список.

UPD: Проблему удалось решить установкой вручную 5 версии Андроид - был КитКат, поставил Лоллипоп и телефон стал виден.
 
Последнее редактирование:

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
А как переключить элемент switch, если у него свойство clickable = false?
Сижу не могу понять что с этим делать. Никаких подходящих методов нет.
На click он не реагирует.
appium.jpg
 

Anatoliy777

Новичок
Регистрация
29.06.2016
Сообщения
17
Благодарностей
6
Баллы
3

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Ну да. По таймеру не годится.
 

Anatoliy777

Новичок
Регистрация
29.06.2016
Сообщения
17
Благодарностей
6
Баллы
3
  • Спасибо
Реакции: avtostopshik

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Это к сожалению не работает
Код:
Starting: Intent { cmp=io.appium.settings/.Settings (has extras) }
Error type 3
Error: Activity class {io.appium.settings/io.appium.settings.Settings} does not
exist.
Пробую другие варианты но пока тоже никак.
На Андроиде от 5 и выше эти методы не работают т.к. Гугл внес изменения. Так можно включать wifi например, но Mobile Data - нет.
 
Последнее редактирование:

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
Это к сожалению не работает
Код:
Starting: Intent { cmp=io.appium.settings/.Settings (has extras) }
Error type 3
Error: Activity class {io.appium.settings/io.appium.settings.Settings} does not
exist.
Пробую другие варианты но пока тоже никак.
На Андроиде от 5 и выше эти методы не работают т.к. Гугл внес изменения. Так можно включать wifi например, но Mobile Data - нет.
Отключение
Код:
adb shell svc data disable
Включение
Код:
adb shell svc data enable
 
  • Спасибо
Реакции: avtostopshik

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Не работает. Это на Андроиде версии 5 и выше не должно работать.
 

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Подскажите пожалуйста что с этим делать:
Код:
Выполнение действия CSharp OwnCode A new session could not be created. Details: Problem getting session data for driver type AndroidDriver; does it implement 'get driverData'? (33)
Просто замахало это уже. Я неправильно компоную? Надо как-то закрывать сессию?
 
Последнее редактирование:

vovain

Client
Регистрация
31.07.2015
Сообщения
183
Благодарностей
2
Баллы
18
Как через nox настроить и как будет ли работать многопоток?
Запишите пожалуйста видео кто умеет так делать)
 

Mahno

Client
Регистрация
16.05.2015
Сообщения
440
Благодарностей
94
Баллы
28

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28

eagleowl

Client
Регистрация
03.11.2012
Сообщения
263
Благодарностей
30
Баллы
28
Там все элементы для клика недоступны. Пришлось ставить стороннюю прогу.
 

deukech

Client
Регистрация
11.09.2014
Сообщения
129
Благодарностей
59
Баллы
28
штука, вроде хорошая, но на genymotion отказывается работать
вроде устанавливает прокси, но при коннекте выдает ошибку создания туннеля.

Уже не знаю куда смотреть.

Подскажите по прокси, плз.
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
117
Баллы
43
Возможно ли не прибигая к фреймворкам в том числе аппиума, чисто консольный вариант производить тапы/клики или фокус не по координатам а по полученному xml, также через консоль с помощью adb shell uiautomator dump?

либо же максимально упрощенным консольной tool'зой? не прибигая к излишней тонны функционала фреймворков?

грубо говоря кликер, все отлично заполняеться, делаю проверку состояния grep ом дампа xml, и далее для выбора элементов меню нужен фокус тапом к примеру для того чтобы перемещять курсор keyevent 21/22 и тд.
или существует для этого хитрый keyevent?)
 

schnaps

Client
Регистрация
07.02.2010
Сообщения
837
Благодарностей
150
Баллы
43
А как переключить элемент switch, если у него свойство clickable = false?
Сижу не могу понять что с этим делать. Никаких подходящих методов нет.
На click он не реагирует.
Посмотреть вложение 23919
свайп по координатм пробовал?
можно взять bounds, разобрать на составляющие, выявить таким образом область на экране, и сделать внутри нее свайп.
 

schnaps

Client
Регистрация
07.02.2010
Сообщения
837
Благодарностей
150
Баллы
43
Ребята, посдкажите пожалуйста, я вот пытаюсь ввести длинный текст в input, процесс занимает может быть пару минут (текст довольно большой, несколько сотен слов). но всегда, через 60 секунд валится исключение по таймауту, что мол клиент не дожался ответа от сервера.
этот таймаут имеется в driver.CommandExecutor, но поменять его значение я не могу, так как свойство не является публичным.
upload_2017-10-27_12-4-27.png


как быть в такой ситуации?
пилить текст на куски и вводить его не вариант, так как sendkeys очищает input перед вводом





UPD. Я затупок ) при создании драйвера можно указать таймаут команды
driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap, TimeSpan.FromSeconds(180));
 
Последнее редактирование:

deukech

Client
Регистрация
11.09.2014
Сообщения
129
Благодарностей
59
Баллы
28
Ребята, посдкажите пожалуйста, я вот пытаюсь ввести длинный текст в input, процесс занимает может быть пару минут (текст довольно большой, несколько сотен слов). но всегда, через 60 секунд валится исключение по таймауту, что мол клиент не дожался ответа от сервера.
этот таймаут имеется в driver.CommandExecutor, но поменять его значение я не могу, так как свойство не является публичным.
Посмотреть вложение 24224

как быть в такой ситуации?
пилить текст на куски и вводить его не вариант, так как sendkeys очищает input перед вводом





UPD. Я затупок ) при создании драйвера можно указать таймаут команды
driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap, TimeSpan.FromSeconds(180));
в батнике запуска аппиума укажи параметр --command-timeout 2400
где 2400 - это как раз секунды таймаута, выставляй нужное значение.
 
Регистрация
15.04.2016
Сообщения
632
Благодарностей
105
Баллы
43
У меня слишком быстро SendKeys Отправляется.
Можно его как-то замедлить? Телефон символы ест =с
 

schnaps

Client
Регистрация
07.02.2010
Сообщения
837
Благодарностей
150
Баллы
43
в батнике запуска аппиума укажи параметр --command-timeout 2400
где 2400 - это как раз секунды таймаута, выставляй нужное значение.
вот почему-то не спасло это. а при создании драйвера вроде нормально, но при этом получилось так, что если элемена нет на экране, то исключение не выбрасывается пока не истечет этот таймаут
 

Hartwell

Client
Регистрация
25.09.2014
Сообщения
194
Благодарностей
117
Баллы
43
вот почему-то не спасло это. а при создании драйвера вроде нормально, но при этом получилось так, что если элемена нет на экране, то исключение не выбрасывается пока не истечет этот таймаут
могу на junit накидать, разберешься, переколдуешь под себя?

а так попробую на верную мысль навести, точнее мысли:

Если аппиум позволяет, в нутри вызова таймаута, заполнять текст, то есть функция
Sleep(360);

// SystemClock.Sleep(3600); // junit

Второй пусть wait until, можно указать в качестве UiObject findBy элемент находящийся после заполнения текста и вюжлбавить (... (Until.ByText(.....)) TIMEOUT);


Третий вариант сдедать обработку события OnClickable (как в примере ниже, код скопипастил, главное все же суть). Или текстого поля, или кнопки submit/etc. В момент отправки формы, элементы изменят свойства объектов, по которому будет выход из until.

Код:
WebElement element = (new WebDriverWait(driver, 30)).until(ExpectedConditions.elementToBeClickable(By.xpath(".//*[@class='IM_overlay']")));    //it will wait 30 second for get this element
element .click();

Путь четвертый, Не эмулировать нажатия, а тупо либо вставить либо заполнить тем же adb
device cmd ( shell text input ".")


Пятый, если важнее не заполненное поле а продолжение теста - exception, try, cath

в junit существуют assert'ы, тем самым можно вывести эррор в лог и продолжить тест
 
  • Спасибо
Реакции: schnaps

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
Node с актуальной версией appium v1.6.4
https://yadi.sk/d/AS-QajJT3JQxi3
Можно закинуть в проект и работать уже c директории проекта, запуск так:
Код:
"{-Project.Directory-}\nodejs\node.exe" "{-Project.Directory-}\nodejs\node_modules\npm\node_modules\appium\build\lib\main.js" -a 127.0.0.1 -p 4723 -bp 4724 --no-reset --command-timeout 500 --local-timezone
У меня походу appium вообще не запускается, так как при выполнении C# сниппета ошибка:
Выполнение действия CSharp OwnCode Unexpected error. System.Net.WebException: Невозможно соединиться с удаленным сервером ---> System.Net.Sockets.SocketException: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение 127.0.0.1:4723
в System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
в System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)
--- Конец трассировки внутреннего стека исключений ---
в OpenQA.Selenium.Appium.Service.AppiumCommandExecutor.Execute(Command commandToExecute)
в OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)

В чем может быть ошибка? Сижу ломаю голову не понимаю
 

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
Код:
driver.pressKeyCode(AndroidKeyCode.BACK);
Подскажите пожалуйста using для этого или что там нужно

upload_2017-11-22_12-54-8.png
 

Risk

Client
Регистрация
26.08.2016
Сообщения
75
Благодарностей
26
Баллы
18
Как установить апиум правильно?
 

ramilxxxl

Client
Регистрация
25.02.2016
Сообщения
27
Благодарностей
2
Баллы
3
Спасибо за статью! Очень жаль что всё разобрано на примере с реальным телефоном... Конечно же в 1000 раз эта тема более актуальна для эмулятора андроид на пк... Понятно, что всё там делается так же, но вот у меня не получается настроить, например, с тем же genymotion...
Ребят, кто знает как это всё работает? Можете помочь, подсказать в скайпе? Разумеется готов заплатить за помощь! Вот скайп: invest_193
 

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
Спасибо за статью! Очень жаль что всё разобрано на примере с реальным телефоном... Конечно же в 1000 раз эта тема более актуальна для эмулятора андроид на пк... Понятно, что всё там делается так же, но вот у меня не получается настроить, например, с тем же genymotion...
Ребят, кто знает как это всё работает? Можете помочь, подсказать в скайпе? Разумеется готов заплатить за помощь! Вот скайп: invest_193
напиши в телегу мне @Tsuk15 если хочешь, я сам только со всем разобрался вроде....
 

Tsuk15

Client
Регистрация
25.04.2017
Сообщения
102
Благодарностей
40
Баллы
28
Большое человеческое спасибо хочу сказать @lybimiy86 Всем советую внимательно прочитать все его сообщения в данной теме + он мне лично несколько раз помог в те моменты когда я уже хотел орать от каких-то непонятных ошибок :D:D
p/s Отдельное спасибо автору темы за то, что она вообще есть тут :-)
 
Последнее редактирование:
  • Спасибо
Реакции: bas2006 и lybimiy86

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Помогите, что может быть? Запускаю команду, а она в консоли выглядит иероглифами и ничего не находит



Команды adb devices и adb shell работают корректно.
 
Последнее редактирование:

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
  • Спасибо
Реакции: Koqpe и littleKongo

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Для просмотра Activity можно использовать приложения с Google Play
Activity Launcher или QuickShortcutMaker
Спасибо, это работает!


Еще вопрос поспел: у элемента нет уникальных индификаторов, только className. С таким классом много элементов. Подскажите как написать чтобы кликнуло по 3-ому элементу

мой код, при этом кликает по первому
Код:
driver.findElementByClassName("android.widget.ImageView").First().Click();
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)