После долгого перерыва возникла необходимость вспомнить об Аppium.
Скачал и установил последний appium server (v1.13.0).
Создал проект и сконфигурировал его мавеном, чтобы использовать последние java-client для appium, testng, selenium-java и selenium-server. Вот pom file:
Сводка
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Appiumudemy</groupId>
<artifactId>appiumudemy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>appiumudemy</name>
<dependencies>
<!-- https://mvnrepository.com/artifact/io.appium/java-client -->
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-server -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.141.59</version>
</dependency>
</dependencies>
</project>
Создал тест, который ничего не делает, просто там прописаны desired capabilities и AndroidDriver.
Вот код:
Сводка
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.Test;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
public class Appiumcapabilities {
@Test
public void appiumTest() throws MalformedURLException {
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "j7xelte");
cap.setCapability(MobileCapabilityType.PLATFORM_VERSION, "7.0");
cap.setCapability("appPackage", "com.wosh.wosh");
AndroidDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"),
cap);
}
}
Запускаю, получаю такую ошибку:
FAILED: appiumTest
org.openqa.selenium.json.JsonException: Unable to determine type from: /. Last 41 characters read: {
"desiredCapabilities": {
"app": /
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'Alexanders-MacBook-Pro.local', ip: '192.168.1.58', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.6', java.version: '1.8.0_131'
Driver info: driver.version: AndroidDriver
at org.openqa.selenium.json.JsonInput.peek(JsonInput.java:122)
at org.openqa.selenium.json.JsonTypeCoercer.lambda$null$6(JsonTypeCoercer.java:140)
at org.openqa.selenium.json.JsonTypeCoercer.coerce(JsonTypeCoercer.java:126)
....
Я понимаю в принципе в чем проблема - почему-то в json файле, который формируется для передачи на appium server есть ошибка - там где должно писаться app стоит символ / - что вызывает нечитаемость json. Я не могу понять 1) с чего вдруг эта ошибка - я вообще не задаю app, я использую appPackage вместо этого. Но я пробовал задавать любой app - как через строку к приложению “~//Downloads//app-wosher-release-10.apk” так и создавая объект File для этого файла и указывая в app capability getAbsolutePath() для него - всегда точно такая же ошибка
2) я не могу понять как исправить эту ошибку.
Гугл уже затер до дыр в поисках решения. Надеюсь кто-то сталкивался с этой ошибкой и сможет мне помочь тут.