当前位置: 首页 > 知识库问答 >
问题:

运行appium脚本时,java.lang.ClassNotFoundExcure正在到来

艾文斌
2023-03-14

我对appium很陌生:

我想运行一个代码,在我的设备中打开chrome和google浏览器。通用域名格式:

  @BeforeMethod
  public void setUp() throws Exception {

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("browserName", "Browser");
    capabilities.setCapability("device", "Android");
    capabilities.setCapability("deviceName", "TA9330416L");
    capabilities.setCapability("platformVersion", "5.1");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("appPackage", "com.android.chrome");
    driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

  }

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

  @Test
  public void launchWebsite()throws InterruptedException {
    driver.get("http://www.google.com");
  }

但是得到以下错误:

?* 配置失败:@BeforeMethod安装程序java。lang.NoClassDefFoundError:com/google/common/base/Function位于WhatsApp。在sun上设置(WhatsApp.java:36)。反映NativeMethodAccessorImpl。在sun上调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(未知源)。反映DelegatingMethodAccessorImpl。在java上调用(未知源)。朗。反思。方法在组织中调用(未知源)。testng。内部的方法调用助手。org上的invokeMethod(MethodInvocationHelper.java:86)。testng。内部的调用者。org上的invokeConfigurationMethod(Invoker.java:514)。testng。内部的调用者。org上的invokeConfigurations(Invoker.java:215)。testng。内部的调用者。org上的invokeMethod(Invoker.java:589)。testng。内部的调用者。invokeTestMethod(Invoker.java:820)位于org。testng。内部的调用者。org上的invokeTestMethods(Invoker.java:1128)。testng。内部的TestMethodWorker。invokeTestMethods(TestMethodWorker.java:129)位于org。testng。内部的TestMethodWorker。在org上运行(TestMethodWorker.java:112)。testng。测试者。privateRun(TestRunner.java:782)位于org。testng。测试者。在org上运行(TestRunner.java:632)。testng。SuiteRunner。在org上运行测试(SuiteRunner.java:366)。testng。SuiteRunner。在org上按顺序运行(SuiteRunner.java:361)。testng。SuiteRunner。privateRun(SuiteRunner.java:319)位于org。testng。SuiteRunner。在org上运行(SuiteRunner.java:268)。testng。SuiteRunnerWorker。运行套件(SuiteRunnerWorker.java:52)位于org。testng。SuiteRunnerWorker。在org上运行(SuiteRunnerWorker.java:86)。testng。TestNG。在org上依次运行suitessequential(TestNG.java:1246)。testng。TestNG。在org上本地运行suitesLocal(TestNG.java:1171)。testng。TestNG。在org上运行(TestNG.java:1066)。testng。遥远的远程测试。在org上运行(RemoteTestNG.java:113)。testng。遥远的远程测试。initAndRun(RemoteTestNG.java:206)位于org。testng。遥远的远程测试。main(RemoteTestNG.java:177)由:java引起。lang.ClassNotFoundException:com.google.常见的基础函数在java上运行。网URLClassLoader。java上的findClass(未知源代码)。lang.ClassLoader。sun上的loadClass(未知源)。杂项。启动器$AppClassLoader。java上的loadClass(未知源)。lang.ClassLoader。loadClass(未知源)。。。还有27个

跳过配置:@Aftermethod tearDown
跳过:启动网站*/

共有2个答案

朱淮晨
2023-03-14

必须创建任何测试类吗?错误表示找不到类定义。您必须首先在测试类上创建,并在类中定义函数。我没有在android浏览器上尝试过,但我已经使用appium实现了android混合应用和本机应用的自动化。

package test;

import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import io.appium.java_client.android.AndroidDriver;

public class TestBrowser {

public AndroidDriver driver;

public TestBrowser() {
        //To do
}

@BeforeMethod
  public void setUp() throws Exception {

    DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability("appium-version", "1.0");
    capabilities.setCapability("browserName", "Browser");
    capabilities.setCapability("platformName", "Android");
    capabilities.setCapability("deviceName", "TA9330416L");
    capabilities.setCapability("platformVersion", "5.1");
    capabilities.setCapability("appPackage", "com.android.chrome");
    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

  }

@AfterMethod
public void tearDown() throws Exception {
        if(driver!=null)
        driver.quit();
 }

  @Test
  public void launchWebsite()throws InterruptedException {
    driver.get("http://www.google.com");
  }
}
郗唯
2023-03-14

您需要添加这个依赖项https://code.google.com/p/guava-libraries/

 类似资料: