Appium Desktop 1.6.1> IOS> java:运行所需的功能会导致错误

时间:2018-05-21 16:48:35

标签: java ios appium appium-ios

背景资料

Eclipse:4.5.2 Appium桌面:1.6.1 Java 1.8.0_7 b15

嗨,

我无法从eclipse到appium桌面(IOS)运行我想要的功能。

我该如何解决这个问题?我想要的能力是正确的。

public class InvokeIOS {

public static void main(String[] args) throws MalformedURLException {

// TODO Auto-generated method stub

DesiredCapabilities d=new DesiredCapabilities();

d.setCapability(MobileCapabilityType.DEVICE_NAME,"iPhone 6");

d.setCapability(MobileCapabilityType.PLATFORM_NAME,"IOS");

d.setCapability(MobileCapabilityType.AUTOMATION_NAME,AutomationName.IOS_XCUI_TEST);

d.setCapability(MobileCapabilityType.APP,"/Users/jacquelinegeorge/Documents/Appium/Apps/ios-uicatalog-master/DerivedData/UICatalog/Build/Products/Debug-iphonesimulator/UICatalog.app");

IOSDriver<IOSElement> driver = new IOSDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),d);

我收到以下错误消息

  

线程中的异常&#34; main&#34; org.openqa.selenium.WebDriverException:处理命令时发生未知的服务器端错误。   原始错误:错误的应用:   /Users/jacquelinegeorge/Documents/Appium/Apps/ios-uicatalog-master/DerivedData/UICatalog/Build/Products/Debug-iphonesimulator/UICatalog.app。   应用程序路径必须是绝对的,或者相对于appium服务器   安装目录,或压缩文件的URL或特殊的应用程序名称

     

构建信息:版本:&#39; 3.9.1&#39;,修订版:&#39; 63f7b50&#39;,时间:   &#39; 2018-02-07T22:42:22.379Z&#39;

     

系统信息:主持人:&#39; Jacquelines-MacBook-Air.local&#39;,ip:&#39; 192.168.0.5&#39;,   os.name:&#39; Mac OS X&#39;,os.arch:&#39; x86_64&#39;,os.version:&#39; 10.13.4&#39;,   java.version:&#39; 1.8.0_71&#39;

     

驱动程序信息:driver.version:IOSDriver

     

remote stacktrace:UnknownError:发生未知的服务器端错误   在处理命令时。原始错误:错误的应用:   /Users/jacquelinegeorge/Documents/Appium/Apps/ios-uicatalog-master/DerivedData/UICatalog/Build/Products/Debug-iphonesimulator/UICatalog.app。   应用程序路径必须是绝对的,或者相对于appium服务器   安装目录,或压缩文件的URL或特殊的应用程序名称。

     

at getResponseForW3CError   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/lib/protocol/errors.js:800:13)   at asyncHandler $   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/lib/protocol/protocol.js:352:37)   在tryCatch   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/node_modules/babel-runtime/regenerator/runtime.js:67:40)   在GeneratorFunctionPrototype.invoke [as _invoke]   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/node_modules/babel-runtime/regenerator/runtime.js:315:22)在GeneratorFunctionPrototype.prototype。(匿名函数)[作为下一个]   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/node_modules/babel-runtime/regenerator/runtime.js:100:21)在GeneratorFunctionPrototype.invoke   (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/node_modules/babel-runtime/regenerator/runtime.js:136:37)at at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)   在   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)   在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)   在java.lang.reflect.Constructor.newInstance(Constructor.java:422)at   org.openqa.selenium.remote.W3CHandshakeResponse.lambda $新的$ 0(W3CHandshakeResponse.java:57)   在   org.openqa.selenium.remote.W3CHandshakeResponse.lambda $ getResponseFunction $ 2(W3CHandshakeResponse.java:104)   在   org.openqa.selenium.remote.ProtocolHandshake.lambda $ $了createSession 0(ProtocolHandshake.java:123)   在   java.util.stream.ReferencePipeline $ 3 $ 1.accept(ReferencePipeline.java:193)   在   java.util.Spliterators $ ArraySpliterator.tryAdvance(Spliterators.java:958)   在   java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:126)   在   java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:498)   在   java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:485)   在   java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)   在   java.util.stream.FindOps $ FindOp.evaluateSequential(FindOps.java:152)   在   java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)   在   java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)   在   org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)   在   org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)   在   org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:138)   在   io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:89)   在   org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)   在   io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)   在io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)at   io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)at   org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)   在   org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:142)   在   io.appium.java_client.DefaultGenericMobileDriver。(DefaultGenericMobileDriver.java:38)   在io.appium.java_client.AppiumDriver。(AppiumDriver.java:83)at   io.appium.java_client.AppiumDriver。(AppiumDriver.java:93)at   io.appium.java_client.ios.IOSDriver。(IOSDriver.java:78)at   iostraining.InvokeIOS.main(InvokeIOS.java:22)

2 个答案:

答案 0 :(得分:1)

原始错误说明: Bad app: /Users/jacquelinegeorge/Documents/Appium/Apps/ios-uicatalog-master/DerivedData/UICatalog/Build/Products/Debug-iphonesimulator/UICatalog.app. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name.

您的能力看起来正确,但您需要做什么:

  1. 检查路径是否正确,尝试移动到某个文件夹以获得更短的绝对路径。
  2. 重建您的应用程序,构建可能已损坏。
  3. 尝试使用不同的模拟器:有时您可以在使用1个模拟器构建应用程序时获取它,但尝试通过Appium使用另一个模拟器
  4. 尝试降级appium服务器

答案 1 :(得分:0)

我弄清楚为什么我一直收到错误的应用消息。如前所述,这是由于.app文件的位置(我从XCode复制而来)。我无法移动到我的桌面,因为.app文件被隐藏了,我可以通过Xcode访问它。

然而,有一个秘密问题是连接xcode,这会导致“不良应用消息”。

当我最初构建&#39; UIcatalog应用程序&#39;在xcode中它表现出很多“贬值”。消息&#39 ;.看到我清理了构建(这是在这个实例中的一个错误)。

相反,我应该放弃它,忽略折旧消息并让应用程序在ios模拟器上安装。

这就是原因:

当您清理构建时,它将隐藏.app文件,无法访问该位置(右键单击&gt;显示在文件夹中),并且您无法复制.app文件可以放置在桌面上以获得所需的功能,因为它隐藏在安全的位置。

正如您可以通过单击下面的链接看到的(在我在Xcode中构建UICatalog而不清除构建之后。

我点击了文件夹图标&gt;然后选择 UICatalog.xprog &gt;然后选择我选择的产品 UI目录.app &gt; R /点击,选择&#39;在查找程序中显示&#39; &gt; 复制 UI catalog.app文件&gt; 粘贴将其粘贴到我的桌面上。

我刚刚在近一个月没有IOS培训没有进展的情况下发现了这一点。

Click here