public class StartFirstJobTest {
AppiumDriver driver;
@BeforeTest
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "F4AZFG07P508");
//capabilities.setCapability("platformName","Android");
//capabilities.setCapability("platformVersion", "5.0");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
当我尝试运行测试时,出现此错误。
org.openqa.selenium.SessionNotCreatedException:无法创建新的 远程会话。期望的能力=能力 [{platformName = Android,deviceName = F4AZFG07P508}],必填 capabilities =功能[{}]构建信息:版本:' 3.3.1', 修订版:' 5234b325d5',时间:' 2017-03-10 09:10:29 + 0000'系统信息: 主持人:' MacBook-Pro-Roman.local',ip:' fe80:0:0:0:77:aef0:77:32%en0', os.name:' Mac OS X',os.arch:' x86_64',os.version:' 10.12.3', java.version:' 1.8.0_121'驱动程序信息:driver.version:AndroidDriver
我认为我在appium中正确设置了所有内容(当检查器启动时,设备已安装应用程序且可以进行测试)
作为项目收藏家,我使用Maven
UPD。 我试图自动化应用程序。我在代码中指定了其他功能
@BeforeTest
public void setUp() throws Exception {
File app = new File("/Users/romanderabin/Downloads/TimeTracker.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","F4AZFG07P508");
capabilities.setCapability("platformVersion", "5.0");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.ronasit.timetrackerandroid");
capabilities.setCapability("appActivity","com.ronasit.timetrackerandroid.MainActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4727/wd/hub/"), capabilities);
且错误相同
org.openqa.selenium.SessionNotCreatedException:无法创建新的 远程会话。期望的能力=能力 [{应用= /用户/ romanderabin /下载/ TimeTracker.apk, appPackage = com.ronasit.timetrackerandroid, appActivity = com.ronasit.timetrackerandroid.MainActivity, platformVersion = 5.0,platformName = Android,deviceName = F4AZFG07P508}], required capabilities = Capabilities [{}]构建信息:版本: ' 3.3.1',修订版:' 5234b325d5',时间:' 2017-03-10 09:10:29 + 0000' 系统信息:主持人:' MacBook-Pro-Roman.local',ip: ' fe80:0:0:0:77:aef0:77:32%en0',os.name:' Mac OS X',os.arch: ' x86_64',os.version:' 10.12.3',java.version:' 1.8.0_121'司机 info:driver.version:AndroidDriver
在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141) 在 io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:69) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604) 在 io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:40) at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1) 在 io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244) 在 org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:131) 在 org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:144) 在 io.appium.java_client.DefaultGenericMobileDriver。(DefaultGenericMobileDriver.java:36) 在io.appium.java_client.AppiumDriver。(AppiumDriver.java:114) 在io.appium.java_client.AppiumDriver。(AppiumDriver.java:132) 在 io.appium.java_client.android.AndroidDriver。(AndroidDriver.java:92) 在StartFirstJobTest.setUp(StartFirstJobTest.java:30)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:85) 在 org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:510) 在org.testng.internal.Invoker.invokeConfigurations(Invoker.java:211) 在org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) 在org.testng.TestRunner.beforeRun(TestRunner.java:648)at org.testng.TestRunner.run(TestRunner.java:616)at org.testng.SuiteRunner.runTest(SuiteRunner.java:359)at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:354)at at org.testng.SuiteRunner.privateRun(SuiteRunner.java:312)at 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:1191)at at org.testng.TestNG.runSuitesLocally(TestNG.java:1116)at at org.testng.TestNG.run(TestNG.java:1024)at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)at at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:127)at at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498)at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
测试被忽略。
Appium在我尝试开始测试时记录
[HTTP] - > POST / wd / hub / session {" desiredCapabilities" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk"," appPackage":&#34 ; com.ronasit.timetrackerandroid"" appActivity":" com.ronasit.timetrackerandroid.MainActivity"" platformVersion":" 5.0&# 34;," platformName":" Android和#34;" DEVICENAME":" F4AZFG07P508"}" requiredCapabilities":{ },"功能" {" desiredCapabilities" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk",& #34; appPackage":" com.ronasit.timetrackerandroid"" appActivity":" com.ronasit.timetrackerandroid.MainActivity""&platformVersion #34;:" 5.0"" platformName":" Android和#34;" DEVICENAME":" F4AZFG07P508"} " requiredCapabilities":{}}," alwaysMatch" {"应用":" /Users/romanderabin/Downloads/TimeTracker.apk" " appPackage":" com.ronasit.timetrackerandroid"" appActivity" :" com.ronasit.timetrackerandroid.MainActivity"" platformVersion":" 5.0"" platformName":"的Android&# 34;," DEVICENAME":" F4AZFG07P508"}" firstMatch":[]}
[debug] [MJSONWP]错误的参数:BadParametersError:参数是 不正确。我们要 {"需":[" desiredCapabilities&#34],"可选":[" requiredCapabilities""的sessionId",& #34; ID"]} 你送了 [" desiredCapabilities"" requiredCapabilities""功能"" alwaysMatch"" firstMatch"]
[HTTP]< - POST / wd / hub / session 400 4 ms - 228
答案 0 :(得分:2)
我找到了问题的解决方案。将Appium Java客户端版本4.1.2更新到5.0.0 BETA6并使用Selenium-Java版本3.3.1
答案 1 :(得分:1)
在处理版本兼容性时,Maven 存储库提供了 Compile Dependencies 选项。只需向下滚动 Maven Repository 网站,您就会看到这一部分。
答案 2 :(得分:0)
我希望你使用的是物理设备,而不是模拟器。在这两种情况下,我们都需要在所需功能中提及浏览器或应用程序文件详细信息。我假设你没有在代码和Appium GUI中提到这些东西。下面是使用appium测试混合apk的测试示例代码。
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","ANDROID");
capabilities.setCapability("platformVersion", "6");
capabilities.setCapability("platformName",Constant.appPlatform);
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", Constant.appPackage);
capabilities.setCapability("appActivity",Constant.appActivity);
driver = new AndroidDriver(new URL("http://127.0.0.1:4727/wd/hub"), capabilities);
此代码将调用在目标设备中打开的应用程序,其中提到的应用程序活动具有所需的功能。
答案 3 :(得分:0)
尝试更换设备。我更换了设备,对我有用。
答案 4 :(得分:0)
我遇到了同样的问题,因为我使用清单中的appPackage。应该从gradle(applicationId)获取appPackage。
答案 5 :(得分:0)
在您的 IDE 中,在终端中运行以下命令
appium --allow-insecure chromedriver_autodownload
这将安装 chromedrivers,您就可以在 chrome 浏览器上运行代码了
答案 6 :(得分:0)
这可能是一个问题,因为据我所知,您在客户端脚本所在的同一台机器上运行 Appium,请尝试使用“http://127.0.1.1:4723/wd/hub”。这个解决方案对我有用。
AndroidDriver<AndroidElement> driver = null;
driver = new AndroidDriver<>(new URL("http://127.0.1.1:4723/wd/hub"), capabilities);