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

Перед строчками с i, поставь:
Код:
Развернуть Свернуть Копировать
int i = int.Parse(project.Variables["count"].Value); // count - переменная зенки
Если i выше используется, то используй другое имя.
потом вместо [1] написать ?, если да, то я так делал и у меня ошибка

Выполнение действия CSharp OwnCode An element could not be located on the page using the given search parameters.
 
Соррян, так должно быть правильней:
C#:
Развернуть Свернуть Копировать
...
string i = project.Variables["count"].Value;
driver.FindElementByXPath("//android.widget.FrameLayout[contains(@resource-id, 'com.knuddels.android:layout/userlist_card_port_large')][" + i + "]").Click(); //жмем
...
 
Последнее редактирование:
  • Спасибо
Реакции: Master4eg
Соррян, так должно быть правильней:
C#:
Развернуть Свернуть Копировать
...
string i = project.Variables["count"].Value;
driver.FindElementByXPath("//android.widget.FrameLayout[contains(@resource-id, 'com.knuddels.android:layout/userlist_card_port_large')][" + i + "]").Click(); //жмем
...
Спасибо
 
Приветствую!

Друзья, помогите пожалуйста реализовать данную схему в современных реалиях(я про то что статья давняя и многое изменилось).

Я полностью прошелся по инструкции автора и выполнил все пункты + нашел статью где об всем детально описано - http://www.software-testing-tutoria...09/connect-android-device-with-pc-in-usb.html и прибег к выполнению всех рекомендаций. Собственно пришел я к тому, что ни как не удается получить идентификатор(вывод командной строки на скрине)

https://drive.google.com/file/d/1qaFUNqULXi4MSHhb31xl60joc-Tc0Wsf/view?usp=sharing

Я использовал PdaNet для подключения телефона(в статье по ссылке автор указывает на рекомендацию, если устройство не определяется), но все тщетно.

И да, режим дебага и откладки включен на телефоне(Meizu M3s, Android 5.1)

Помогите, пожалуйста! Это помощь за оплату, которую оговорим при открытии диалога.
view
 
Интриговали, что именно изменилось, просветите пожалуйста.
Это предположение. Я думаю за 4 года модель либо не эффективна или видоизменилась ввиду того что по инструкции у меня ничего не получилось. Если у Вас рабочая модель, поделитесь пожалуйста, а с меня оплата ваших знаний и помощи
 
Это предположение. Я думаю за 4 года модель либо не эффективна или видоизменилась ввиду того что по инструкции у меня ничего не получилось. Если у Вас рабочая модель, поделитесь пожалуйста, а с меня оплата ваших знаний и помощи
Вероятно Вы даже не удосужились прочитать всю тему, например на 14 странице это все обсуждалось, начиная с 414 сообщения :bt:
 
подскажите, пытаюсь выполнить тоже самое

DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.0.3");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
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); // инициализируем экземпляр класса драйвера с настроечками
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60)); //экземпляр класса для ожидания
wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.FrameLayout[contains(@resource-id, 'action_bar_inbox_icon_with_badge')]"))); //ожидаем
driver.FindElementByXPath("//android.widget.FrameLayout[contains(@resource-id, 'action_bar_inbox_icon_with_badge')]").Click(); //жмем

http://joxi.ru/4AkLKJJtyOglGr
и получаю такую ошибку, с чем это связано? с юсингами с либами ?
 
подскажите, пытаюсь выполнить тоже самое

DesiredCapabilities cap = new DesiredCapabilities(); // экземпляр класса настроек
cap.SetCapability("deviceName", "Insta"); // имя девайся (абсолютно любое)
cap.SetCapability("platformVersion", "4.0.3");// версия платформы (тоже любая)
cap.SetCapability("platformName", "Android");//имя платформы
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); // инициализируем экземпляр класса драйвера с настроечками
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(60)); //экземпляр класса для ожидания
wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath("//android.widget.FrameLayout[contains(@resource-id, 'action_bar_inbox_icon_with_badge')]"))); //ожидаем
driver.FindElementByXPath("//android.widget.FrameLayout[contains(@resource-id, 'action_bar_inbox_icon_with_badge')]").Click(); //жмем

http://joxi.ru/4AkLKJJtyOglGr
и получаю такую ошибку, с чем это связано? с юсингами с либами ?
я думаю да, так и написано что пространство имен отсутствует
 
Гайс, и все таки проблему я так решить и не могу, имеется "android.widget.EditText" их 2, через индекс я выбираю 2й, делаю SendKeys и по итогу сначала очищается поле с индексом 1 и туда пытается отправить нужный мне текст, не могу побороть эту проблему уже которые сутки, было у кого такое?Может решение есть?
 
через индекс я выбираю 2й
Попробуй выбрать индекс 1 пусть очищается поле с индексом 2 и туда пытается отправить нужный текст :-)
Можно тап по координатам и потом SendKeys, экспериментируйте :bt:
 
  • Спасибо
Реакции: Vivi
Гайс, и все таки проблему я так решить и не могу, имеется "android.widget.EditText" их 2, через индекс я выбираю 2й, делаю SendKeys и по итогу сначала очищается поле с индексом 1 и туда пытается отправить нужный мне текст, не могу побороть эту проблему уже которые сутки, было у кого такое?Может решение есть?
Можешь попробовать так, выделять поле сначала, в которое нужно будет вписать, а потом этот код
Код:
Развернуть Свернуть Копировать
    ProcessStartInfo startInfo = new ProcessStartInfo();
    string serial = project.Variables["serial_telephone"].Value;
    startInfo.FileName = @"adb.exe";
    startInfo.Arguments = @"-s "+serial+" shell input text 'your_text_here' ";//параметры выполнения adb команды
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
    Process.Start(startInfo).WaitForExit();//запускаем процесс и дожидаемся выполнения
 
Последнее редактирование:
  • Спасибо
Реакции: Vivi
Попробуй выбрать индекс 1 пусть очищается поле с индексом 2 и туда пытается отправить нужный текст :-)
Можно тап по координатам и потом SendKeys, экспериментируйте :bt:
если выбираю поле с индексом 1 то оно все равно сначала очищается (поле с индексом 1) потом записывается занова, т.е. без разницы выберу я хоть 1й хоть 2й,запись все равно будет идти сначала в 1й индекс
а как сделать тап по координатам?буду признателен если дадите пример:bt:

Можешь попробовать так, выделять поле сначала, в которое нужно будет вписать, а потом этот код
Код:
Развернуть Свернуть Копировать
    string serial = project.Variables["serial_telephone"].Value;
    startInfo.FileName = @"adb.exe";
    startInfo.Arguments = @"-s "+serial+" shell input text 'your_text_here' ";//параметры выполнения adb команды
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
    Process.Start(startInfo).WaitForExit();//запускаем процесс и дожидаемся выполнения
попробую,спасибо,попозже отпишусь
 
короче лучше не париться со скрещиванием зеннопостера и аппиума, на всех этапах разбора темы возникают различного рода необъяснимые ошибки, которые порой невозможно решить по ряду причин

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

так и не заработал свайп вправо
:D:D:D
 
Последнее редактирование:
Можешь попробовать так, выделять поле сначала, в которое нужно будет вписать, а потом этот код
Код:
Развернуть Свернуть Копировать
    string serial = project.Variables["serial_telephone"].Value;
    startInfo.FileName = @"adb.exe";
    startInfo.Arguments = @"-s "+serial+" shell input text 'your_text_here' ";//параметры выполнения adb команды
    startInfo.WindowStyle = ProcessWindowStyle.Hidden;//скрываем окно выполнения
    Process.Start(startInfo).WaitForExit();//запускаем процесс и дожидаемся выполнения
а какие библиотеки необходимо еще добавить чтоб этот код заработал?а то я так понимаю что чего то не хватает
upload_2019-1-18_13-30-24.png
 
  • Спасибо
Реакции: Vivi
Код:
Развернуть Свернуть Копировать
using System.Linq;
using OpenQA.Selenium.Appium.Android;
using OpenQA.Selenium.Appium;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Appium.MultiTouch;
using System.Diagnostics;
using System;
using System.IO;
using System.ComponentModel;
 

Вложения

  • dll.rar
    dll.rar
    1 MB · Просмотры: 354
  • Спасибо
Реакции: udder и Vivi
да пишите на гетах, пожрубите нужный сертификат, и вуаля
если никто не догадается как это хотя многие уже думаю в тихушку на гет епашут а выкладывают типо на кликах
то запилю наверно хоть раз в конкурсной
как тема типо
как использовать гет с эмулятора
Серьезно? Внатуре? Без трепа? Или как всегда хвастаешься? Мужик сказал - мужик сделал! Ты мужик? бери теперь и делай!
 
Добрый день!


Установлен апиум 3.0
Селениум 3.11.0 (новые версии также почему-то не работают)

System.TypeLoadException: "Отсутствует реализация метода "Dispose" в типе "OpenQA.Selenium.Appium.Service.AppiumCommandExecutor" из сборки "appium-dotnet-driver, Version=3.0.0.2, Culture=neutral, PublicKeyToken=null"."

удалось побороть?
 
Вариант 1. Средствами adb. Через Батник. Если adb не указан в переменных средах, то добавить путь до adb.
Код:
Развернуть Свернуть Копировать
adb shell am start -a android.intent.action.VIEW -d http://zennolab.com
Вариант 2. Средствами adb,но через C# код в кубике.
PHP:
Развернуть Свернуть Копировать
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"adb";
startInfo.Arguments = @"shell am start -a android.intent.action.VIEW -d http://zennolab.com";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo).WaitForExit();
Вариант 3. Средствами Appium. Нужно зайти в браузер перед этим
PHP:
Развернуть Свернуть Копировать
driver.Navigate().GoToUrl("http://zennolab.com");
Можешь подсказать, как 1 способом открыть ссылку на определенном девайсе? т.е. какую строку нужно добавить
 
  • Спасибо
Реакции: udder
Можешь подсказать, как 1 способом открыть ссылку на определенном девайсе? т.е. какую строку нужно добавить

Вводишь в командной строке:
PHP:
Развернуть Свернуть Копировать
adb devices
Получаешь устройства и серийные номера устройств.
Далее к любой команде adb добавляешь синтаксис -s номер устройства, чтоб отправлять команды на нужное устройство. Например к твоему вопросу будет так (серийный номер в примере 0123456789ABCDEF):
PHP:
Развернуть Свернуть Копировать
adb -s 0123456789ABCDEF shell am start -a android.intent.action.VIEW -d http://zennolab.com

Или по 2-му варианту:
PHP:
Развернуть Свернуть Копировать
var sn = project.Variables["sn"].Value;

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"adb";
startInfo.Arguments = "-s "+sn+" shell am start -a android.intent.action.VIEW -d http://zennolab.com";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(startInfo).WaitForExit();
 
Последнее редактирование:
  • Спасибо
Реакции: sw_sw, Nike59 и Master4eg
Вводишь в командной строке:
PHP:
Развернуть Свернуть Копировать
adb devices
Получаешь устройства и серийные номера устройств.
Далее к любой команде adb добавляешь синтаксис -s номер устройства, чтоб отправлять команды на нужное устройство. Например к твоему вопросу будет так (серийный номер в примере 0123456789ABCDEF):
PHP:
Развернуть Свернуть Копировать
adb -s 0123456789ABCDEF shell am start -a android.intent.action.VIEW -d http://zennolab.com
Благодарю
 

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