簡體   English   中英

Appium-Android混合應用程序

[英]Appium - Android Hybrid app

執行測試腳本后,我看到控制台“ driver null”錯誤

腳本:

capabilities.setCapability("appium-version", "1.4.0");
System.out.println("<<< Detects android device / emulator >>>");
capabilities.setCapability("deviceName","New1");
capabilities.setCapability("platformVersion", "4.4.2");
capabilities.setCapability("platformName","Android");
capabilities.setCapability("autoWebview","true");
capabilities.setCapability("automationName","Appium");
//capabilities.setCapability("newCommandTimeout", "180");
capabilities.setCapability("app", "com.android.launcher");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appActivity", "com.sciit.mat");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);

控制台錯誤:

<<< Detects android device / emulator >>>
<<< Utlizes remote webdriver >>>
Driver in App screen : null
FAILED: sampletestmethod
java.lang.NoSuchMethodError: org.openqa.selenium.remote.ErrorHandler.<init>(Lorg/openqa/selenium/remote/ErrorCodes;Z)V
at io.appium.java_client.AppiumDriver.<clinit>(AppiumDriver.java:46)
at com.sci.matapp.sampleScript1.TestScript1.sampletestmethod(TestScript1.java:39)
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:85)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:639)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:816)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1124)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:124)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:108)
at org.testng.TestRunner.privateRun(TestRunner.java:773)
at org.testng.TestRunner.run(TestRunner.java:623)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)
at org.testng.SuiteRunner.run(SuiteRunner.java:261)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110)
at org.testng.TestNG.run(TestNG.java:1018)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:112)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:176)
===============================================
Default test
Tests run: 1, Failures: 1, Skips: 0
===============================================

===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
[TestNG] Time taken by org.testng.reporters.XMLReporter@1064425: 521 ms
[TestNG] Time taken by org.testng.reporters.JUnitReportReporter@6ea0c6: 508 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 131 ms
[TestNG] Time taken by org.testng.reporters.jq.Main@899482: 746 ms
[TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@d17bee: 551 ms
[TestNG] Time taken by org.testng.reporters.EmailableReporter2@16432db: 81 ms

注意:我已經利用了以下jar文件:

  • android
  • 硒java-2.47.1

  • java client2.2.0

  • selenium-java-client-driver-1.0.1

  • 硒服務器獨立2.47.1

  • selendroid-standalone-0.10.0-具有依賴性

如果我想念什么,可以幫忙一下。 謝謝,

如果jar文件之間存在版本沖突,則會出現classNotFoundException / NoSuchMethodError。 同時查看異常,它在AppiumDriver上給出了錯誤。

  • selendroid-client-0.16.0.jar
  • selendroid-standalone-0.16.0.-with-dependancies.jar
  • selenium-server-standalone-2.45.0.jar或更高版本
  • 硒java-2.44.0
  • Java-client-3.1.0(1.0.1太舊了)

編輯

  • httpclient-*。jar
  • httocore-*。jar

確保為httpclient和httpcore使用最新版本和相同版本。 嘗試使用所有jar的最新版本,主要避免NoSuchMethodError

在給定上下文中找不到元素的Edit2,您需要顯式切換到webview,以便appium可以監視元素。 嘗試獲取所有如下的Webview:

String nr = driver.getWindowHandles().toString();
System.out.print(nr); 

IT將返回類似於以下內容的數組:

[NATIVE_APP, WEBVIEW_1, WEBVIEW_0]

現在以以下方式切換到WEBVIEW_1:

driver.switchTo().window("WEBVIEW_1");

請注意:Appium不能在多個Web視圖之間進行切換。 (至少我遇到了這個問題。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM