【问题标题】:Appium Desktop 1.6.1> IOS> java: running desired capabilities gives badAppium Desktop 1.6.1> IOS> java:运行所需的功能给出了不好的
【发布时间】:2018-10-31 08:56:57
【问题描述】:

背景资料

日食: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);

我收到以下错误消息

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

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

系统信息:主机:'Jacquelines-MacBook-Air.local',ip:'192.168.0.5', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.13.4', java.version: '1.8.0_71'

驱动信息:driver.version:IOSDriver

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

在 getResponseForW3CError (/Applications/Appium.app/Contents/Resources/app/node_modules/appium-base-driver/lib/protocol/errors.js:800:13) 在异步处理程序$ (/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.(匿名函数) [as next ] (/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) 在 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) 在 org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$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) 在 io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1) 在 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) 在 io.appium.java_client.AppiumDriver.(AppiumDriver.java:93) 在 io.appium.java_client.ios.IOSDriver.(IOSDriver.java:78) 在 iostraining.InvokeIOS.main(InvokeIOS.java:22)

【问题讨论】:

    标签: java ios appium appium-ios


    【解决方案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 服务器

    【讨论】:

    • 我同意路径太长。但是,.app 文件位于隐藏文件夹中,我无法在此版本的 xcode (9.3.1) 中访问它(相信我,我尝试了 3 天!)。
    【解决方案2】:

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

    但是,连接的 xcode 存在一个秘密问题,它会导致“错误的应用程序消息”。

    当我最初在 xcode 中构建“UIcatalog 应用程序”时,它显示了很多“折旧”消息。看到我清理了构建(这是这个实例中的一个错误)。

    相反,我应该不理会它,忽略折旧消息并让应用自行安装在 ios 模拟器上。

    原因如下:

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

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

    我点击了文件夹图标 > 然后选择UICatalog.xprog > 然后选择我选择的产品UI Catalog.app > R /click ,选择“在 finder 中显示” > 复制 UI catalog.app 文件>粘贴到我的桌面。

    在我的 IOS 培训近一个月无法取得进展后,我昨天才发现这一点。

    Click here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 2017-04-04
      • 2018-03-07
      • 1970-01-01
      • 2017-08-01
      相关资源
      最近更新 更多