Я получаю сообщение об ошибке, когда установка Appium не может запустить приложение. Я использую настройку конфигурации ниже:
java-client = 3.1.0
selenium-java = 3.11.0
appium-version = 1.7.0
Также добавлена следующая зависимость, но по-прежнему возникает та же проблема:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
Следующие возможности, которые я установил:
File app = new File(prop.getProperty("apkFilePath"));
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability("DeviceName", "Redmi Note 5");
cap.setCapability("PlatformVersion", prop.getProperty("platformVersion"));
cap.setCapability("platformName", "Android");
cap.setCapability("app", app.getAbsolutePath());
try{
driver=new AndroidDriver(new URL("http://0.0.0.0:4723/wd/hub"),cap);
}catch(Exception e){
e.printStackTrace();
}
Error: java.lang.NoSuchMethodError:
com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet(Ljava/util/Comparator;)Ljava/util/stream/Collector;
at org.openqa.selenium.remote.NewSessionPayload.lambda$validate$4(NewSessionPayload.java:199)
at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:372)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:373)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
at org.openqa.selenium.remote.NewSessionPayload.validate(NewSessionPayload.java:215)
at org.openqa.selenium.remote.NewSessionPayload.(NewSessionPayload.java:163)
at org.openqa.selenium.remote.NewSessionPayload.create(NewSessionPayload.java:114)
Пожалуйста, посмотрите, как решить эту проблему .. Я пытаюсь последние два дня, но все еще сталкиваюсь с той же проблемой. есть любые другие способы решить эту настройку appium, любезно предлагаю ... Жду доброго ответа ...




У вас могут быть конфликтующие версии Guava в вашем пути к классам (т.е. сигнатуры метода, который вы пытаетесь вызвать, разные).
Я ранее сталкивался с NoSuchMethodError, и на самом деле это происходит из-за конфликтующих версий jar-файлов.
Взгляните на этот отвечать.
Также взгляните на этот проблема
selenium-java-3.11 требует Guava 23.6-jre as per the pom.xml:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>23.6-jre</version>
<classifier></classifier>
</dependency>
Вы перешли на более старую версию Guava, удалили свою собственную версию из pom.xml и позволили селену выбрать нужную версию.
спасибо за ответ. Я изменил guava на 23.6-jre, но получаю сообщение об ошибке: org.openqa.selenium.SessionNotCreatedException: не удалось создать новый сеанс. Подробности: объект requiredCapabilities недействителен по следующей причине: 'deviceName' не может быть пустым (ПРЕДУПРЕЖДЕНИЕ: сервер не предоставил никакой информации о трассировке стека) Длительность или тайм-аут команды: 488 миллисекунд
@manishkumar, вам следует открыть еще один вопрос с более подробной информацией. Похоже, это не связано с исходной проблемой.
попробуйте использовать platformVersion вместо ПлатформаВерсия и имя устройства вместо Имя устройства.
cap.setCapability("deviceName", "Redmi Note 5");
cap.setCapability("platformVersion", prop.getProperty("platformVersion"));
//or you can use
//cap.setCapability("platformVersion", "8.1.0"); //your android os version directly
you don't need to use guava dependency if you are using maven project to add selenium-java
Одна из возможностей заключается в том, что вы скомпилировали код с одним jar-файлом
Guavaи запустили программу в развертывании с другой версией jar-файла, что было в случае, когда я столкнулся с ошибкойNoSuchMethodError.