2017-01-23 3 views
0

Я пытаюсь запустить пример тестовых скриптов, закодированных с помощью java в Eclipse с Appium. Я запускаю Appium по npm (я использую Appium 1.6.3, я не новичок в Appium, я запускаю его раньше на Mac и на окнах без каких-либо проблем, но на этот раз в Ubuntu это выглядит немного иначе, в то время как это не с appium приложение, но с консолью)Не удалось создать новый удаленный сеанс при тестировании приложения Android с Appium

appium --address 127.0.0.1 

Я использует

  • Java-клиент-4.1.2.jar
  • селен явы-3.0.1.jar
  • селен поддерживаемого сервера standalone-3.0.1.jar
  • testng-6.9.10.jar

И мой Java класс:

import io.appium.java_client.android.AndroidDriver; 
import io.appium.java_client.android.AndroidElement; 

import java.io.File; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 

import org.testng.annotations.AfterClass; 
import org.testng.annotations.BeforeClass; 
import org.testng.annotations.Test; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.remote.RemoteWebDriver; 

public class FirstTest { 

    AndroidDriver<AndroidElement> driver; 

    File path = new File("/home/emna/Téléchargements/AutomationFiles/app-release.apk"); 


    @BeforeClass 
    public void setUp() throws MalformedURLException { 

     System.out.println("app Dir.--->" + path); 

     DesiredCapabilities capabilities = new DesiredCapabilities(); 

     capabilities.setCapability("deviceName", "SM-G360H"); 
     capabilities.setCapability("version", "4.4.4"); 
     capabilities.setCapability("platformName", "Android"); 
     capabilities.setCapability("platformVersion", "platform"); 
     capabilities.setCapability("udid", "***************"); 
     capabilities.setCapability("app", path.getAbsolutePath()); 
     capabilities.setCapability("appPackage", "com.bulldozer.gaa"); 
     capabilities.setCapability("appActivity", 
       "com.bulldozer.gaa.activities.MainActivity"); 
     driver = new AndroidDriver<AndroidElement>(new URL("http://127.0.0.1:4723/wd/hub"), 
       capabilities); 
     driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); 
    } 

    @Test 
    public void Test1() throws InterruptedException { 

     // driver.wait(10000); 
     System.out.println("GAA"); 
     driver.findElement(By.id("acceptCheckbox")).click(); 
     driver.findElement(By.id("continueBtn")).click(); 

    } 

    @AfterClass 
    public void tearDown() { 
     driver.quit(); 

    } 

} 

Но проблема в том, что:

[TestNG] Running: 
    /tmp/testng-eclipse--2049046107/testng-customsuite.xml 

app Dir.--->/home/emna/Téléchargements/AutomationFiles/app-release.apk 
Jan 24, 2017 1:14:44 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end 
Jan 24, 2017 1:14:59 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Falling back to original OSS JSON Wire Protocol. 
Jan 24, 2017 1:15:10 PM org.openqa.selenium.remote.ProtocolHandshake createSession 
INFO: Falling back to straight W3C remote end connection 
FAILED CONFIGURATION: @BeforeClass setUp 
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{app=/home/emna/Téléchargements/AutomationFiles/app-release.apk, appPackage=com.bulldozer.gaa, appActivity=com.bulldozer.gaa.activities.MainActivity, platformVersion=platform, platformName=Android, udid=*************, deviceName=SM-G360H, version=4.4.4}], required capabilities = Capabilities [{}] 
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:48:19 -0700' 
System info: host: 'tarek-Vostro-3902', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.4.0-59-generic', java.version: '1.8.0_91' 
Driver info: driver.version: AndroidDriver 
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91) 
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141) 
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:69) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601) 
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40) 
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 

Здесь файл журнала Appium:

[debug] [ADB] Running '/home/emna/Android/Sdk/platform-tools/adb' with args: ["-P",5037,"-s","***************","shell","am","force-stop","io.appium.unlock"] 
[debug] [Logcat] Stopping logcat capture 
[debug] [AndroidDriver] Not cleaning generated files. Add `clearSystemFiles` capability if wanted. 
[MJSONWP] Encountered internal error running command: Error: Error occured while starting App. Original error: Permission to start activity denied. 
    at Object.wrappedLogger.errorAndThrow (lib/logger.js:60:13) 
    at ADB.callee$0$0$ (../../../lib/tools/apk-utils.js:80:9) 
    at tryCatch (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40) 
    at GeneratorFunctionPrototype.invoke [as _invoke] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22) 
    at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21) 
    at GeneratorFunctionPrototype.invoke (/usr/local/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37) 
    at process._tickCallback (internal/process/next_tick.js:103:7) 
[HTTP] <-- POST /wd/hub/session 500 11015 ms - 223 
[HTTP] --> POST /wd/hub/session {"capabilities":{"desiredCapabilities":{"app":"/home/emna/Téléchargements/AutomationFiles/app-release.apk","appPackage":"com.bulldozer.gaa","appActivity":"com.bulldozer.gaa.activities.MainActivity","platformVersion":"platform","platformName":"Android","udid":"************","deviceName":"SM-G360H","version":"4.4.4"},"requiredCapabilities":{}}} 
[debug] [MJSONWP] Bad parameters: BadParametersError: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","capabilities","sessionId","id","sessionId","id","sessionId","id"]} and you sent ["capabilities"] 
[HTTP] <-- POST /wd/hub/session 400 5 ms - 205 

ответ

1

проблема с самого APK-файла, я использовал другой. apk file с той же конфигурацией, которую я использовал, и она отлично работает!

1

Вы забыли самое главное возможно, это путь к .apk:

capabilities.setCapability("app", "appPath"); 

Кроме того, я бы рекомендовал при переходе от RemoteWebDriver драйверу Android, так как у вас будет немного больше функциональных возможностей:

driver = new AndroidDriver(....) 

PS: Вы можете обновить Java-клиент 4.1.2 и TestNG в 6.9.10

+0

Спасибо @ Давид, я попробую. Но путь приложения не требуется, пока я нахожусь с реальным устройством и там установлено приложение. Разве нет? – Emna

+1

appPath требуется всегда! –

+0

По-прежнему имеют ту же ошибку: FAILED CONFIGURATION: @BeforeClass setUp org.openqa.selenium.SessionNotCreatedException: невозможно создать новый удаленный сеанс. желаемые возможности = возможности [{app =/home/emna/Téléchargements/AutomationFiles/app-release.apk, appPackage = com.bulldozer.gaa, appActivity = com.bulldozer.gaa.activities.MainActivity, platformVersion = платформа, platformName = Android, udid = *********, deviceName = SM-G360H, версия = 4.4.4}], требуемые возможности = Возможности [{}] Информация о сборке: версия: '3.0.1', редакция: '1969d75', время: '2016-10-18 09:48:19 -0700' – Emna

1

Причина в том, что в вашем Appium уже запущено приложение с использованием настроек графического интерфейса пользователя.

Одновременно вы пытаетесь запустить его снова из своего кода.

Что должно помочь: В Appium UI перейдите в настройки Android (основной) панели

  1. Применение: не определяют/запустить приложение и его деятельности.

  2. Возможности панели определяют и выберите {имя платформы, автоматизации Имя, Платформа Версия}

+0

Я не использую appium app, я только запускаю appium с npm, должен ли я обновить что-нибудь в команде 'appium --address 127.0.0.1', я нажал в консоли? Я использую ubuntu – Emna

+0

Сначала попробуйте убить все процессы appium. Запустите эмулятор самостоятельно. Вот как работает Appium в моем случае, связанный с моим сообщением 'Запуск Appium с командой: '/Applications/Appium.app/Contents/Resources/node/bin/node' appium/build/lib/main.js - debug-log-spacing --automation-name «Appium» --платформенное имя «Android» --платформенная версия «6.0» --device-name «emulator-5554» ' Затем эмулятор« эмулятор-5554 » должно быть обнаружено –

+0

Я использую реальное устройство не эмулятор – Emna

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