2017-12-27 216 views
0

我使用页面对象模型Appium测试,得到以下错误:Appium页面对象模型runrime错误

FAILED: login_TC001 
java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.FluentWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object; 
    at io.appium.java_client.pagefactory.AppiumElementLocator.waitFor(AppiumElementLocator.java:88) 
    at io.appium.java_client.pagefactory.AppiumElementLocator.findElement(AppiumElementLocator.java:103) 
    at io.appium.java_client.pagefactory.interceptors.InterceptorOfASingleElement.intercept(InterceptorOfASingleElement.java:57) 
    at io.appium.java_client.android.AndroidElement$$EnhancerByCGLIB$$c0b591f0.sendKeys(<generated>) 
    at com.HaulPass.PageObjects.LoginPage.login(LoginPage.java:30) 
    at com.HaulPass.Test.HaulPass_LoginPage.login_TC001(HaulPass_LoginPage.java:40) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) 
    at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) 
    at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) 
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) 
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
    at org.testng.TestRunner.privateRun(TestRunner.java:767) 
    at org.testng.TestRunner.run(TestRunner.java:617) 
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
    at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) 
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) 
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1198) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1123) 
    at org.testng.TestNG.run(TestNG.java:1031) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77) 

我怎样才能解决呢?

这里是我的代码:

public static AndroidDriver<MobileElement> driver; 

    @BeforeTest 
    public void driverconfig() { 
     DesiredCapabilities cap = new DesiredCapabilities(); 
     cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Nexus 5X"); 
     cap.setCapability("appPackage", "com.chamberlain.haulpass.delivery"); 
     cap.setCapability("appActivity", ".login.activity.LoginActivity"); 
     try { 
      driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), cap); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 

    } 

    @Test 
    public void login_TC001() { 
     LoginPage HaulPassLogin = new LoginPage(driver); 
     HaulPassLogin.login("[email protected]", "[email protected]"); 
    } 
} 

public class LoginPage { 

    public LoginPage (AndroidDriver<MobileElement> driver){ 
     PageFactory.initElements(new AppiumFieldDecorator(driver,30,TimeUnit.SECONDS), this); 
    } 
    @AndroidFindBy (id="com.chamberlain.haulpass.delivery:id/edit_loginlanding_username") 
    public MobileElement userName; 

    @AndroidFindBy (id="com.chamberlain.haulpass.delivery:id/edit_loginlanding_password") 
    public MobileElement password; 

    @AndroidFindBy (id="com.chamberlain.haulpass.delivery:id/button_loginlanding_login") 
    public MobileElement SignInBtn; 

    public void login(String Email, String Password) { 
     userName.sendKeys(Email); 
     password.sendKeys(Password); 
     SignInBtn.click(); 
    } 

} 

回答

0

我看不到里面的代码明显的问题,但基于错误的堆栈跟踪有可能是问题与你的依赖:

  1. 确保您使用兼容的服务器/客户端版本,例如1.7.1,5.0.4 for pom.xml/build.gradle中的java-client
  2. 删除旧的并下载新的(例如,如果您使用的是maven并在您的工作目录中运行mvn install,请清除.m2文件夹)