2016-02-07 2 views
3

У меня есть сценарий, который мне нужно переключать Приложения, используя Selenium и Appium. Я начинаю с браузера, затем мне нужно получить некоторую информацию из панели уведомлений, а затем переключиться обратно в браузер. Мне удалось сделать каждый процесс автономным. но теперь я изо всех сил стараюсь сделать это как процесс от конца до конца.Переключение между приложениями

Я начал с создания сеанса webdriver, но я не могу открыть новый сеанс, пока он первый работает. проблема в том, что браузер и appium имеют разные сеансы. Один из них называют по

_driver = new AndroidDriver<AppiumWebElement>(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); 

И второй по

_webdriver = new RemoteWebDriver(new Uri("http://127.0.0.1:4723/wd/hub"), capabilities, TimeSpan.FromSeconds(180)); 
+0

Если вы хотите использовать два драйвера в тех же 'Uri' и' port'. Один из способов сделать это: '_driver = новый AndroidDriver (новый Uri (" http://127.0.0.1:4723/wd/hub "), возможности, TimeSpan.FromSeconds (180)); // Выполните действие с браузером здесь _driver.quit(); _webdriver = new RemoteWebDriver (новый Uri («http://127.0.0.1:4723/wd/hub»), возможности, TimeSpan.FromSeconds (180)); // Выполните действие с помощью панели уведомлений здесь _webdriver.quit(); ' – nullpointer

+0

@guy ваше решение может быть проблематичным, так как мне нужно прокрутить панель уведомлений во время сеанса браузера или, по крайней мере, вернуться в браузер просто после получения информации, необходимой мне из панели уведомлений. –

+0

@YanivEliav Я не дал вам никакого решения, просто отредактировал вопрос. – Guy

ответ

1

мне удалось сделать то, что нужно. Все, что мне нужно было сделать, это запустить AndroidDriver сначала с помощью приложения Chrome appActivity и appPackage.

Затем используйте driver.Context = NATIVE_APP;, чтобы использовать действия Android. Возвращение к хроме довольно просто. driver.context = "WEBPAGE_1"; Этот синтаксис относится к C#.

для того, чтобы знать, какой контекст вы используете, используйте этот код:

var Handledcontext=driver.Context.Tostring(); 

удачи и спасибо всем за то, чтобы помочь мне.

0

Сначала вы выполняете тест в браузере с помощью пульта дистанционного WebDriver, установив время команды к большому value..then сохранить SessionID в file..then закрыть процесс, не выходя из браузера .. во-вторых вы выполнить тест с помощью appium driver..and бросить его снова подключите первую сессию с SessionID, сохраненной в файле ..

Если вы используете клиент узла, то это очень просто Чтобы получить sessionid: driver.getSessionId(); Чтобы подключиться к существующей сессии: driver.attach («ваш идентификатор сеанса», функция (ошибка, возможность) { });

Если вы используете какой-либо другой язык клиента, как Java или C# Тогда вы должны переопределить метод выполнения селена для присоединения к существующей сессии

+0

, к сожалению, ни один из предлагаемых решений не работал. расстраивает. –

Смежные вопросы