背景资料
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)
答案 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 :(得分: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培训没有进展的情况下发现了这一点。