【问题标题】:Getting Exception NoClassDefFoundError in Appium在 Appium 中获取异常 NoClassDefFoundError
【发布时间】:2016-11-09 19:48:38
【问题描述】:

在单击元素时在 Appium 中获取异常 java.lang.NoClassDefFoundError: org/openqa/selenium/HasTouchScreen。我在代码相同的任务中使用了 三个定位器(text,id,partialLinkText),但每次仍然得到相同的异常。 PFB App DOM 截图、代码、异常、jarfile版本

  1. selenium-android-driver.jar
  2. java-client-4.1.2 (1).jar
  3. selenium-server-standalone-3.0.1.jar

我正在尝试单击“登录或”文本,以便自动执行登录模块。但我只停留在第一步:(

代码

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.android.AndroidDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

public class searsLogin {
    AndroidDriver driver;
  @BeforeTest
  public void setup() throws MalformedURLException {
      DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "ccdcb242");
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "ANDROID");
        capabilities.setCapability(CapabilityType.VERSION, "5.1.1");
        capabilities.setCapability("platformName", "Android");
          capabilities.setCapability("appPackage", "com.sears.android");
            capabilities.setCapability("appActivity", "com.android.sears.activity.MenuDrawerActivity");
             driver = (AndroidDriver) new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
           driver.manage().timeouts().implicitlyWait(45, TimeUnit.SECONDS);
  }
    @Test
  void execution()
  {
        // driver.findElementByName("Sign in or").click();/// contains method
 // boolean res = driver.findElement(By.name("Sign in or")).isDisplayed();  
//boolean res =  driver.findElement(By.xpath("//*[contains(text(),'Sign in or')]")).isDisplayed();
  driver.findElement(By.partialLinkText("Sign in or")).click(); 
     }
   @AfterTest
  public void end()
  {
      driver.quit();
  }  }

异常消息

java.lang.NoClassDefFoundError: org/openqa/selenium/HasTouchScreen
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)

【问题讨论】:

  • 这是错误的 driver.findElement(By.partialLinkText("Sign in or")).click();,检查一下,youtube.com/watch?v=bT3tqaLNn-Y
  • @Manidroid 它没有工作 manidroid
  • selenium-android-driver.jar ?

标签: java android selenium appium noclassdeffounderror


【解决方案1】:

您正在使用用于移动设备的 WEB 定位器。 此操作的正确 XPath 如下:

By.xpath("//*[@text='Sign in or']")

【讨论】:

    【解决方案2】:

    在 Appium v​​1.5.3 - Android 中,点击定位器“名称”尝试:

    driver.findElementByAndroidUIAutomator("new UiSelector().text(\"定位器名称\")").click();

    对于提到的截图 : driver.findElementByAndroidUIAutomator("new UiSelector().text(\"登录或\")").click();

    【讨论】:

    • 你还没有回答问题,只是随便贴了几行代码。解释您的做法有何不同,以便提问的人知道发生了什么。
    猜你喜欢
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    相关资源
    最近更新 更多