Estoy tratando de hacer la automatización de Android Appium usando Java. A continuación se muestra el código:
public class Main { AppiumDriver driver; @Before public void setup() throws Exception{ DesiredCapabilities desiredCapabilities = new DesiredCapabilities(); desiredCapabilities.setCapability("platformVersion","4.4"); desiredCapabilities.setCapability("platformName","Android"); desiredCapabilities.setCapability("app","/PATH_TO_APK"); driver = new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),desiredCapabilities); } @After public void tearDown(){ driver.quit(); } @Test public void firstTest(){ WebElement element = driver.findElementById("ELEMENT_ID"); element.click(); } }A continuación se muestra el error
org.openqa.selenium.WebDriverException: Unable to parse remote response: Parameters were incorrect. We wanted {"required":["desiredCapabilities"],"optional":["requiredCapabilities","sessionId","id","sessionId","id","sessionId","id","sessionId","id","sessionId","id","sessionId","id"]} and you sent ["desiredCapabilities","requiredCapabilities","capabilities"] Build info: version: '3.4.0', revision: 'unknown', time: 'unknown' System info: host: 'WGB01ML106163.local', ip: 'fe80:0:0:0:3e15:c2ff:febe:8ea0%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.11.6', java.version: '1.8.0_131' Driver info: driver.version: AndroidDriver¿Alguien ha visto este error antes? No puedo encontrar nada en Google. Por favor ayuda.
También necesitamos pasar el "nombre del dispositivo" en las capacidades.
desiredCapabilities.setCapability("deviceName","Android");Además, si realiza pruebas de aplicaciones híbridas/nativas en el móvil, también debemos aprobar appPackage y appActivity. Entonces, al combinar todas las capacidades obligatorias, las capacidades generales deseadas se verán similares a esto.
public void setup() throws Exception { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName","ANDROID"); capabilities.setCapability("platformVersion", "5.1"); capabilities.setCapability("platformName",Constant.appPlatform); capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", Constant.appPackage); capabilities.setCapability("appActivity",Constant.appActivity); driver = new AndroidDriver(new URL("http://127.0.0.1:4727/wd/hub"),capabilities); driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); }Una forma sencilla de obtener appActivity/appPackage es ponerse en contacto con su desarrollador. Si no es posible, marque esto => appActivity/appPackage
Más detalles sobre varias capacidades están disponibles aquí.
https://github.com/appium/appium/blob/master/docs/en/write-running-appium/caps.md