首页 > 解决方案 > 使用 Android Emulator 从 Eclipse 执行简单的 Appium 脚本时遇到问题,请帮助我确定问题

问题描述

将 2 个文件和添加的 jar 文件添加为快照,我的 appium 服务器运行良好,显示 200 响应,并且在 android 模拟器应用程序正在打开但无法单击任何东西 Java 构建路径和 appium 服务器日志作为快照 Appium 服务器日志,节点version:v14.​​16.1, npm version:6.14.12, jave version: jdk-16_windows-x64_bin,Android studio 3.4.2 &Appium server:1.21.0 "ApiDemos-debug.apk" demo app used,
//base file 1 content :

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;

public class Base {

    public static AndroidDriver<AndroidElement> Capabilities() throws MalformedURLException {
        // TODO Auto-generated method stub
    File f= new File("src");
    File fs= new File(f,"ApiDemos-debug.apk");  
DesiredCapabilities cap= new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "appium");
cap.setCapability(MobileCapabilityType.AUTOMATION_NAME,"uiautomator2");
cap.setCapability(MobileCapabilityType.APP, fs.getAbsolutePath());
AndroidDriver<AndroidElement> driver= new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
return driver ;
    }

}

//基础文件2内容:

导入 java.net.MalformedURLException;导入 java.util.concurrent.TimeUnit;

导入 io.appium.java_client.android.AndroidDriver;导入 io.appium.java_client.android.AndroidElement;

公共类基础扩展 Base{

public static void main(String[] args) throws MalformedURLException, InterruptedException {
    // TODO Auto-generated method stub
    
    AndroidDriver<AndroidElement> driver = Capabilities();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    //driver.findElementByXPath("(//android.widget.TextView)[8]").click();
    //driver.wait(2000);
    //driver.findElementsByClassName("//android.widget.TextView").get(8).click();
    driver.findElementByAndroidUIAutomator("text(\"Preference\")").click();
    
}

}

现在,当从 Eclipse 运行时,基本文件 2 会出现以下问题,即使在带有注释行的基本文件中也会得到类似的失败响应:

2021 年 5 月 9 日晚上 11:00:15 io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0 信息:检测到方言:线程“主”java.lang.NoClassDefFoundError 中的 W3C 异常:org/apache/commons/lang3/StringUtils at io.appium.java_client.internal.ElementMap.getElementClass(ElementMap.java:77) 在 io.appium.java_client.internal.JsonToMobileElementConverter.newRemoteWebElement(JsonToMobileElementConverter.java:69) 在 org.openqa.selenium.remote.internal.JsonToWebElementConverter。在 io.appium.java_client.internal.JsonToMobileElementConverter.apply(JsonToMobileElementConverter.java:63) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:561) 在 io.appium 应用(JsonToWebElementConverter.java:55) .java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41) 在 io.appium.java_client.AppiumDriver。在 org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323) 在 io.appium 的 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 执行(AppiumDriver.java:1) .java_client.DefaultGenericMobileDriver.findElement(DefaultGenericMobileDriver.java:61) 在 io.appium.java_client.AppiumDriver.findElement(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.findElement(AndroidDriver.java:1) 在io.appium.java_client.FindsByAndroidUIAutomator.findElementByAndroidUIAutomator(FindsByAndroidUIAutomator.java:38) 在 Basics.main(Basics.java:18) 引起:java.lang.ClassNotFoundException: org.apache.commons.lang3.StringUtils 在 java.base/ jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:636) 在 java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:182) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)

标签: javaandroid-emulatorappiumappium-android

解决方案


错误消息如下:

原因java.lang.ClassNotFoundException::org.apache.commons.lang3.StringUtil

因此,您可能希望将Apache Commons Lang 3.x添加到调试版本中:

debugImplementation "org.apache.commons:commons-lang3:3.12.0"

推荐阅读