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

Регистрация
15.04.2016
Сообщения
632
Благодарностей
105
Баллы
43
  • Спасибо
Реакции: Redsmokky

dengivseti

Client
Регистрация
18.08.2016
Сообщения
39
Благодарностей
3
Баллы
8

strcn

Client
Регистрация
08.07.2017
Сообщения
73
Благодарностей
46
Баллы
18
Доброго времени суток, уважаемые. Шаблон на каждом из этапов выдает сообщение:

Компиляция кода Ошибка в действии "CS0234" "Имя типа или пространства имен "Remote" отсутствует в пространстве имен "OpenQA.Selenium" (пропущена ссылка на сборку?)". [Строка: -12; Cтолбец: 23]

Скачивал новые dll из поста: http://zennolab.com/discussion/threads/upravlenie-ljubymi-android-prilozhenijami-na-smartfone-iz-zp.33511/page-7#post-281052

Подозреваю, что поменялся using параметр, но в справке толком ничего не нашел, кроме сообщения о том, что произошел редизайн всех параметров. Помогите выбрать нужный Буду признателен за помощь
 

AndreyVorobey

Новичок
Регистрация
29.03.2018
Сообщения
12
Благодарностей
1
Баллы
3
Добрый день ребята! Подскажите уже сил нет ...

Пытаюсь запустить приложение на планшете ICQ , все пред настройки сделал хоть и нереал намучался...
вот такую ошибку выдает:
Выполнение действия CSharp OwnCode A new session could not be created. (Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity) (33)


Вот мой код:
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.4.2");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.SetCapability("appPackage", "com.icq.mobile.client"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".registration.RegistrationActivity"); // активное окно

AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);

Пробовал с другими приложениями, такая же ошибка, планшет не Рутирован(прав рут нет , возможно в этом суть ошибки? ) или это в другом вопрос...

Очень буду признателен , жду помощи, спс !!
 
Последнее редактирование:

AndreyVorobey

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

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
Добрый день ребята! Подскажите уже сил нет ...

Пытаюсь запустить приложение на планшете ICQ , все пред настройки сделал хоть и нереал намучался...
вот такую ошибку выдает:
Выполнение действия CSharp OwnCode A new session could not be created. (Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity) (33)


Вот мой код:
DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.4.2");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
cap.SetCapability("appPackage", "com.icq.mobile.client"); // пространство имен используемое приложением
cap.SetCapability("appActivity", ".registration.RegistrationActivity"); // активное окно

AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), cap);

Пробовал с другими приложениями, такая же ошибка, планшет не Рутирован(прав рут нет , возможно в этом суть ошибки? ) или это в другом вопрос...

Очень буду признателен , жду помощи, спс !!
Добавь в OwnCodeUsings:
Код:
using System.Linq;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using System.Drawing.Imaging;
using System.Diagnostics;
using System;
Это с пространством имен, чтоб не было проблем.


Дальше судя по ошибке у тебя не видит это activity от icq. И судя по его имени, ты указывает на прямой activity на регистрацию-так не прокатит. Нужно activity на центральную страницу. Можешь на android поставить Activity Launcher и через него activity ставить нужные. Кстати там можно создать ярлыки на внутренние activity, но нужно сначала их проверять вручную, откроются или нет.

Или проверить activity, или запускать приложение напрямую с рабочего стола по иконке.
1.Нужное приложение должно быть на рабочем столе
2.Затем запускаю appium с activity рабочего стола, например для NovaLauncher как у меня:
Код:
cap.SetCapability("appPackage", "com.teslacoilsw.launcher");
cap.SetCapability("appActivity", "com.teslacoilsw.launcher.NovaLauncher");
Затем клик по иконке, поиск по имени
Код:
wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.TextView[contains(@text, 'Device Faker')]")));
driver.FindElementsByClassName("android.widget.TextView").Where(f=> f.Text == "Device Faker").First().Click();
Всё есть в этой теме, пройдись по ней и составь снипеты для себя.
 
Последнее редактирование:
  • Спасибо
Реакции: AndreyVorobey

AndreyVorobey

Новичок
Регистрация
29.03.2018
Сообщения
12
Благодарностей
1
Баллы
3
Добавь в OwnCodeUsings:
Код:
using System.Linq;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using System.Drawing.Imaging;
using System.Diagnostics;
using System;
Спасибо большое что ответил, но все равно такую же ошибку пишет...(((

Выполнение действия CSharp OwnCode A new session could not be created. (Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity) (33)
 

AndreyVorobey

Новичок
Регистрация
29.03.2018
Сообщения
12
Благодарностей
1
Баллы
3
Затем клик по иконке, поиск по имени
Установил на планшете (реальным пользуюсь) NovaLauncher, прописал Активити которое Вы дали(У меня такие же через adb shell ), запустило все отлично, теперь в запущеном новалаунчере пытаюсь нажать нажать на менюшку что бы появились иконки приложений и дальше выбрать нужное , но эта менюшка без своего айди как клацнуть по ней? driver.FindElementsByClassName("android.widget.TextView").Click(); пробовал вот так, не хочет работать(
 

AndreyVorobey

Новичок
Регистрация
29.03.2018
Сообщения
12
Благодарностей
1
Баллы
3
lybimiy86 спасибо тебе большое, реально помог !!!

P.S. буду дальше вникать, уже на верном пути...
 

xatchikzzz

Client
Регистрация
08.09.2010
Сообщения
566
Благодарностей
38
Баллы
28
как подключить к NOX подскажите??
 

xatchikzzz

Client
Регистрация
08.09.2010
Сообщения
566
Благодарностей
38
Баллы
28
не пашет сейчас уже...
- Appium теперь по новому как то запускается
- команда adb devices не срабатывает
Может кто может подсказать как сделать?

я так понимаю файлы Длл тоже уже старые

как это можно исправить??
,


хотя телефон подключен , отладка врублена
 
Последнее редактирование:

AndreyVorobey

Новичок
Регистрация
29.03.2018
Сообщения
12
Благодарностей
1
Баллы
3
Вот такую ошибку выдает, что за трабл?? :
Выполнение действия CSharp OwnCode Не удалось загрузить файл или сборку "WebDriver, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Не удается найти указанный файл.
 

strcn

Client
Регистрация
08.07.2017
Сообщения
73
Благодарностей
46
Баллы
18
Забейте и разбирайтесь сами, ничего внятного не подскажут тут)
 

xatchikzzz

Client
Регистрация
08.09.2010
Сообщения
566
Благодарностей
38
Баллы
28
печально что самим разобраться тут вообще проблематично ...
 

Kirillzenp

Client
Регистрация
27.02.2018
Сообщения
100
Благодарностей
1
Баллы
18

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
У кого есть пакет appium, вообще никак не хотит скачиваться, ошибку сети выдаёт и всё, уже всё перепробывал поотключать
 

SteveJobs

Client
Регистрация
03.11.2016
Сообщения
283
Благодарностей
30
Баллы
28
Разобрался? Тот же вопрос
Первый C#:

Код:
AndroidDriver<IWebElement> driver = new AndroidDriver<IWebElement>(new Uri("http://127.0.0.1:"+project.Variables["port_appium"].Value+"/wd/hub"), cap); // инициализируем экземпляр класса драйвера с настроечками
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(100));
Второй C#

Код:
var driver = project.Context["drv"];
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60));
 

am1go

Client
Регистрация
10.12.2012
Сообщения
51
Благодарностей
11
Баллы
8
$50 тому кто сделает по этой статье регер аккаунтов в телеграме. Кто заинтересован - велком в личку.
 

Kirillzenp

Client
Регистрация
27.02.2018
Сообщения
100
Благодарностей
1
Баллы
18
Нужен супермен, который сделает рассыльщик сообщений в Васап по этой статье
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
Приветствую. Использую эммулятор Memo. При выполнении шаблона запускается выбранное приложение андроида но дальнейшие действия не происходят.
В логах аппиума появляется сообщение при выполнении команды adb скрин прилагаю.
Не пойму откуда там появляется порт 4724, я его нигде не указываю. В аргументах к запуску указываю -bp 21533. Может это быть причиной? И как это исправить?
 

Вложения

Sputnik

Client
Регистрация
23.08.2015
Сообщения
30
Благодарностей
9
Баллы
8
Привет! Ребята поделитесь снипетом или направте в нужную сторону - как собрать коллекцию, а потом кликать на элементах, чтобы юзеры не повторялись . Уже мозг сломал.
Элементы все одинаковые, меняется только имя юзера.
 

Вложения

Последнее редактирование:

afk

Client
Регистрация
28.11.2016
Сообщения
98
Благодарностей
25
Баллы
18
Привет! Ребята поделитесь снипетом или направте в нужную сторону - как собрать коллекцию, а потом кликать на элементах, чтобы юзеры не повторялись ю Уже мозг сломал.
Элементы все одинаковые, меняется только имя юзера.
driver.FindElementByXPath("//android.widget.CheckedTextView[contains(@resource-id, 'android:id/text1')][1]").Click();

где [1] - номер совпадения

//android.widget.CheckedTextView[contains(@resource-id, 'android:id/text1')] - тут прописываешь свой xpath
 
  • Спасибо
Реакции: Sputnik

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
У меня при использовании xpath в некоторых местах появлялись ошибки и в uiautomator писалось, что его лучше не использовать. Поэтому если есть resource-id то лучше искать по нему. Для сбора коллекции driver.FindElementsById.
И еще где-то читал, что при использовании xpath выполнение будет дольше.
Чтобы добраться до конкретного элемента, вместо xpath использовал UiSelector.
 
Последнее редактирование:

afk

Client
Регистрация
28.11.2016
Сообщения
98
Благодарностей
25
Баллы
18
Да, кстати ищет долговато элементы. Но юзал только xpath.
Есть ошибка при парсинге совпадений - первое совпадение парсит нормально, а совпадения 2 + - выкидывает ошибку.
Хотя если взять тот же селектор и выполнять клики по совпадениям - всё отрабатывается чётко
 

Sputnik

Client
Регистрация
23.08.2015
Сообщения
30
Благодарностей
9
Баллы
8
driver.FindElementByXPath("//android.widget.CheckedTextView[contains(@resource-id, 'android:id/text1')][1]").Click();
Срабатывает, но кликает на одого и того же юзера. Нужно счетчиком увеличивать индекс? Тогда как юзеры кончатся на страничке , то скрол вниз и как быть дальше? Чет не соображу как все собрать
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
Срабатывает, но кликает на одого и того же юзера. Нужно счетчиком увеличивать индекс? Тогда как юзеры кончатся на страничке , то скрол вниз и как быть дальше? Чет не соображу как все собрать
В данном примере да, счетчиком увеличивать индекс. Или собрать всю коллекцию через FindElements. Но только он соберет коллекцию элементов из видимой части экрана. А вообще загугли про UiSelector, с помощью него делаются и скролы и поиск по родителям и детям. Он как xpath для web. А xpath для андроида оказывается с ограничениями использования.
 
Последнее редактирование:
  • Спасибо
Реакции: afk

Sputnik

Client
Регистрация
23.08.2015
Сообщения
30
Благодарностей
9
Баллы
8
с помощью него делаются и скролы и поиск по родителям и детям
FindElementsByAndroidUIAutomator этот метод для зенки?
А можно пару пример для зенки для моего случая , чтобы понять синтаксис. В гугле все для VS. Как перевести в зенку еще не соображаю.
 

Rooter85

Client
Регистрация
04.07.2015
Сообщения
244
Благодарностей
63
Баллы
28
FindElementsByAndroidUIAutomator этот метод для зенки?
А можно пару пример для зенки для моего случая , чтобы понять синтаксис. В гугле все для VS. Как перевести в зенку еще не соображаю.
driver.FindElementByAndroidUIAutomator("new UiSelector().resourceId(\"conversations_row_message_count\").fromParent(new UiSelector().className(\"android.widget.LinearLayout\"))").Click();
Пример скрола
driver.FindElementByAndroidUIAutomator("new UiScrollable(new UiSelector().scrollable(true).resourceId(\"android:id/list\")).scrollIntoView(new UiSelector().resourceId(\"conversations_row_message_count\"))");
 
  • Спасибо
Реакции: Sputnik

Sputnik

Client
Регистрация
23.08.2015
Сообщения
30
Благодарностей
9
Баллы
8
Подскажите, где ошибка
Код driver.FindElementByXPath("//android.widget.RelativeLayout[contains(@resource-id, 'content')][2]").Click(); работает
Изменяю на конструкцию
for (int j = 2; j < 500 ; j++ )
{

driver.FindElementByXPath("//android.widget.RelativeLayout[contains(@resource-id, 'content')][j]").Click(); - не работает .
}
Пишет Ссылка на объект не указывает на экземпляр объекта.
 

frion-seo

Client
Регистрация
27.02.2011
Сообщения
506
Благодарностей
451
Баллы
63
Подскажите а как быть если в приложении меняется постоянно активное окно ?
т.е. при запуске это gsf.login.NameActivity
после ввода данных и нажатия кнопки становится активным окно gsf.login.UsernameActivity
потом gsf.login.PasswordActivity
и т.п. соответстенно апиум крашится не найдя нужное окно, потому как оно стало подругому называться.. Хэлп плиз =)
 

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