Конфигурация Appium Java

Я пытаюсь автоматизировать свое приложение с помощью Appium, но не могу правильно настроить конфигурацию.

Сервер Appium работает на 127.0.0.1:4723 и запущен. Я эмулирую устройство, используя эмулятор Android SDK с avd.Im, использую Eclipse с Selenium и TestNG для проверки моей конфигурации.

Я получаю ошибку в @BeforeMethod

FAILED CONFIGURATION: @BeforeMethod setUp
java.lang.NoClassDefFoundError: org/openqa/selenium/logging/LoggingHandler

Любое предложение, что может быть не так в моей конфигурации?

package xxx_appium.xxx_appium_test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.aspectj.lang.annotation.Before;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.service.DriverCommandExecutor;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;

public class ConnectionTest {

@BeforeMethod
public void setUp() throws MalformedURLException {

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("BROWSER_NAME", "Android");
    capabilities.setCapability("avd","ANexus");
    capabilities.setCapability("deviceName", "ANexus");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("platformVersion", "9");
    capabilities.setCapability("app", 
    "C:\\Users\\xxx\\Downloads\\yyyy.apk");

    driver = new AndroidDriver<WebElement>(new         
    URL("http://localhost:4723/wd/hub"), capabilities);

}
@AfterMethod
public void tearDown() {
    driver.quit();
}

@Test
public void sampleTest() {
}

Также здесь представлены зависимости maven, чтобы вы знали, какие библиотеки я использую jUnit, потому что я пробовал это также с jUnit:

<dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>
    <dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>6.1.0</version>
</dependency>
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.14.0</version>
</dependency>
</dependencies>

person NobodyIsPerfect    schedule 01.10.2018    source источник


Ответы (1)


Вы можете попробовать две вещи.

  1. Попробуйте с селеном версии 2.53

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>2.53.0</version>
    </dependency>
    
  2. Также не передавайте возможность ниже, потому что вы передаете абсолютный путь к apk, поэтому вам не следует передавать возможность имени браузера, потому что будет создан один сеанс, то есть с браузером или с приложением.

     capabilities.setCapability("BROWSER_NAME", "Android");
    
person Amit Jain    schedule 01.10.2018
comment
Работал как шарм. Проблема была в селеновой версии. Я не знаю, что так сильно изменилось, что моя конфигурация ломается в версии 3.x, но 2.53 работает. - person NobodyIsPerfect; 01.10.2018
comment
У меня такая же ошибка, мне нужно изменить только версию Selenium-Java. Я также упомянул Browser_name, и, просмотрев ваш комментарий, я удалил его, но он просил определить Browser_name, и это необходимо. - person Ishita Shah; 25.10.2018