首页 > 代码库 > appium在真机上运行IOS实例要注意的几点:包括python和java运行log 和部分关键代码

appium在真机上运行IOS实例要注意的几点:包括python和java运行log 和部分关键代码

最近在研究appium对于IOS的自动化测试,发现在真机上运行appium提供的开源的例子遇到了几个block,询问了一个这个方便面的高手并且总结网上搜到的帖子,现在综合一下。

appium 在模拟器中跑,只需要注意app=path

appium真机上运行:1:运行的时候要将APP安装到真机上面

                               2:运行的时候,不能再开instrument 

                               3:命令行里面启动的时候,参数写错了应该是 appium -U 3d2cad7288a64a5445aa98a2cc220132f2cddd1c --app io.appium  然后代码里面 app=bundleID,而不是那个很长的路径,其中-U 参数后面是真机的uuid,可以打开xcode,在windows下的organise下找到,一般mac连接上ipad后会有绿色圆点



现在贴上真机上运行python实例:

Kingsons-MacBook:Study kingson$ appium -U 1a601f5cd791bc379115095fc81cd69b096582a3 --app com.telenavsoftware.doudouy
info: Welcome to Appium v0.11.4 (REV b04decd191002628c88e9bf475553da1cd04a036)
info: Appium REST http interface listener started on 0.0.0.0:4723
   info  - socket.io started
debug: Appium request initiated at /wd/hub/session
debug: Request received with params: {"sessionId":null,"desiredCapabilities":{"device":"iPhone Simulator","platform":"Mac","browserName":"iOS","version":"7.0","app":"com.telenavsoftware.doudouy"}}
info: App is an iOS bundle, will attempt to run as pre-existing
info: Creating new appium session a36fdf63-9b22-48a4-bb01-4b44ddb54aff
info: Removing any remaining instruments sockets
info: Cleaned up instruments socket /tmp/instruments_sock
info: Cleaning up any tracedirs
info: No tracedirs to clean up
info: Localizable.strings is not currently supported when using real devices.
info: Not setting device type since we‘re connected to a device
info: Starting iOS device log capture via idevicesyslog
debug: Real device specified but no ipa, assuming bundle ID is on device
debug: Creating instruments
info: instruments is: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments
info: [INSTSERVER] Instruments socket server started at /tmp/instruments_sock
info: Attempting to run app on real device with UDID 1a601f5cd791bc379115095fc81cd69b096582a3
info: Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -w 1a601f5cd791bc379115095fc81cd69b096582a3 com.telenavsoftware.doudouy -e UIASCRIPT /usr/local/lib/node_modules/appium/lib/devices/ios/uiauto/bootstrap.js -e UIARESULTSPATH /tmp/appium-instruments/
info: And extra without-delay env: {}
info: And launch timeout: 90000ms
info: [INST STDERR] 2013-12-10 10:40:22.536 instruments[53424:507] Connection to the remote device lost while launching target. Aborting...

info: [INST STDERR] 2013-12-10 10:40:22.539 instruments[53424:507] Recording cancelled : At least one target failed to launch; aborting run

info: [INST STDERR] Instruments Trace Error : Error Domain=com.apple.instruments Code=1 "Error Starting Recording" UserInfo=0x7ff6d308f220 {NSLocalizedDescription=Error Starting Recording, NSLocalizedRecoverySuggestion=At least one target failed to launch; aborting run}
Instruments Trace Error : Failed to start trace.

info: [INSTSERVER] Instruments exited with code 253
error: Instruments did not launch successfully, failing session
info: Cleaning up appium session
error: Failed to start an Appium session, err was: Error: Instruments did not launch successfully--please check your app paths or bundle IDs and try again
info: Responding to client with error: {"status":33,"value":{"message":"A new session could not be created. (Original error: Instruments did not launch successfully--please check your app paths or bundle IDs and try again)","origValue":"Instruments did not launch successfully--please check your app paths or bundle IDs and try again"},"sessionId":null}
POST /wd/hub/session 500 6015ms - 342b```

我的部分代码片段:


```python
class TestSequenceFunctions(unittest.TestCase):

    def setUp(self):
        # set up appium
        app = "com.telenavsoftware.doudouy"
        #app = os.path.join(os.path.dirname(__file__),
        #                   ‘../../apps/DDY/build/‘,
        #                   ‘DouDouY.app‘)
        #app = os.path.abspath(app)
        self.driver = webdriver.Remote(
            command_executor=‘http://127.0.0.1:4723/wd/hub‘,
            desired_capabilities={
browserName‘: ‘iOS‘,
device‘: ‘iPhone Simulator‘,
platform‘: ‘Mac‘,
version‘: ‘7.0‘,
app‘: app
            })```
1.启动Appium时,保证你的Real Device的UDID和你的应用的Bundle ID正确
2.确保你的应用可以安装到你的真机上
3.安装后请断开与Xcode的连接
4.确保Mac上没有启动Instruments工具


以下是JAVA运行log:

devexus-iMac:build devexu$ appium -U 3d2cad7288a64a5445aa98a2cc220132f2cddd1c --app io.appium

info: Welcome to Appium v1.1.0 (REV e433bbc31511f199287db7724e1ce692bcb32117)

info: Appium REST http interface listener started on 0.0.0.0:4723

info: socket.io started

info: Non-default server args: {"app":"io.appium","udid":"3d2cad7288a64a5445aa98a2cc220132f2cddd1c"}

debug: Appium request initiated at /wd/hub/session

debug: Request received with params: {"desiredCapabilities":{"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator","browserName":""}}

info: App is an iOS bundle, will attempt to run as pre-existing

info: Creating new appium session 2bcd619b-b7fb-45f5-b20c-79caff8cd24f

info: Removing any remaining instruments sockets

info: Cleaned up instruments socket /tmp/instruments_sock

info: Cleaning up any tracedirs

info: No tracedirs to clean up

info: Setting Xcode folder

info: Setting Xcode version

info: Setting iOS SDK Version

info: iOS SDK Version set to 7.1

info: Detecting automation tracetemplate

info: Not auto-detecting udid, running on sim

info: Localizable.strings is not currently supported when using real devices.

info: Not setting locale because we‘re using a real device

debug: Creating instruments

info: Not setting iOS and app preferences since we‘re on a real device

info: Starting iOS device log capture via idevicesyslog

info: Not setting device type since we‘re connected to a device

debug: Real device specified but no ipa or app path, assuming bundle ID is on device

debug: Starting instruments

info: Instruments is at: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments

info: [INSTSERVER] Instruments socket server started at /tmp/instruments_sock

info: Attempting to run app on real device with UDID 3d2cad7288a64a5445aa98a2cc220132f2cddd1c

info: Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -w 3d2cad7288a64a5445aa98a2cc220132f2cddd1c io.appium.TestApp -e UIASCRIPT /usr/local/lib/node_modules/appium/node_modules/appium-uiauto/uiauto/bootstrap.js -e UIARESULTSPATH /tmp/appium-instruments

info: And extra without-delay env: {}

info: And launch timeouts (in ms): {"global":90000}

info: [INST] 2014-07-02 01:29:30 +0000 Start: Bootstrapping uiauto

       

info: [INST] 2014-07-02 01:29:32 +0000 Start: Got user: devexu

       

info: [INST] 2014-07-02 01:29:33 +0000 Start: Not using settings file.

       

info: [INST] 2014-07-02 01:29:33 +0000 Start: isVerbose:false

       

info: [INST] 2014-07-02 01:29:37 +0000 Start: Using node at: /usr/local/bin/node

       

info: [INSTSERVER] Instruments is ready to receive commands

info: Instruments launched. Starting poll loop for new commands.

info: Setting bootstrap config keys/values

info: Pushing command to appium work queue: "setBootstrapConfig: autoAcceptAlerts=false"

debug: Sending command to instruments: setBootstrapConfig: autoAcceptAlerts=false

info: [INSTSERVER] Socket data received (15 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Sending command to instruments: setBootstrapConfig: autoAcceptAlerts=false

info: [INSTSERVER] Socket data received (48 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":""}

info: Setting initial orientation to PORTRAIT

info: Pushing command to appium work queue: "au.setScreenOrientation(‘PORTRAIT‘)"

debug: Sending command to instruments: au.setScreenOrientation(‘PORTRAIT‘)

info: [INSTSERVER] Sending command to instruments: au.setScreenOrientation(‘PORTRAIT‘)

info: [INST] 2014-07-02 01:29:41 +0000 Debug: target.setDeviceOrientation("1")

       

info: [INSTSERVER] Socket data received (56 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"PORTRAIT"}

info: Device launched! Ready for commands

info: Setting command timeout to the default of 60 secs

info: Appium session started with sessionId 2bcd619b-b7fb-45f5-b20c-79caff8cd24f

POST /wd/hub/session 303 22483ms - 9b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f

debug: Request received with params: {}

info: Responding to client with success: {"status":0,"value":{"webStorageEnabled":false,"locationContextEnabled":false,"browserName":"","platform":"MAC","javascriptEnabled":true,"databaseEnabled":false,"takesScreenshot":true,"warnings":{},"desired":{"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator","browserName":""},"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator"},"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

GET /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f 200 3ms - 624b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element

debug: Request received with params: {"using":"xpath","value":"//UIATextField[1]"}

info: Pushing command to appium work queue: "au.mainApp().getTreeForXML()"

debug: Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Socket data received (6682 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"{\"UIAApplication\":{\"@\":{\"name\":\"TestApp\",\"label\":\"TestApp\",\"value\":null,\"dom\":null,\"enabled\":true,\"valid\":true,\"visible\":true,\"hint\":null,\"path\":\"/0\",\"x\":64,\"y\":72,\"width\":640,\"height\":920},\">\":[{\"UIAWindow\":{\"@\":{\"name\":null,\"label\"

info: Pushing command to appium work queue: "au.getElementByIndexPath(‘/0/1/0‘)"

debug: Sending command to instruments: au.getElementByIndexPath(‘/0/1/0‘)

info: [INSTSERVER] Sending command to instruments: au.getElementByIndexPath(‘/0/1/0‘)

info: [INSTSERVER] Socket data received (61 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":{"ELEMENT":"0"}}

info: Responding to client with success: {"status":0,"value":{"ELEMENT":"0"},"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

POST /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element 200 2258ms - 109b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element/0/displayed

debug: Request received with params: {}

info: Pushing command to appium work queue: "au.getElement(‘0‘).isDisplayed()"

debug: Sending command to instruments: au.getElement(‘0‘).isDisplayed()

info: [INSTSERVER] Sending command to instruments: au.getElement(‘0‘).isDisplayed()

info: [INSTSERVER] Socket data received (50 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":true}

info: Responding to client with success: {"status":0,"value":true,"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

GET /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element/0/displayed200997ms - 89b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element

debug: Request received with params: {"using":"xpath","value":"//UIAButton[1]"}

info: Pushing command to appium work queue: "au.mainApp().getTreeForXML()"

debug: Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Socket data received (6682 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"{\"UIAApplication\":{\"@\":{\"name\":\"TestApp\",\"label\":\"TestApp\",\"value\":null,\"dom\":null,\"enabled\":true,\"valid\":true,\"visible\":true,\"hint\":null,\"path\":\"/0\",\"x\":64,\"y\":72,\"width\":640,\"height\":920},\">\":[{\"UIAWindow\":{\"@\":{\"name\":null,\"label\"

info: Pushing command to appium work queue: "au.getElementByIndexPath(‘/0/1/2‘)"

debug: Sending command to instruments: au.getElementByIndexPath(‘/0/1/2‘)

info: [INSTSERVER] Sending command to instruments: au.getElementByIndexPath(‘/0/1/2‘)

info: [INSTSERVER] Socket data received (61 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":{"ELEMENT":"1"}}

info: Responding to client with success: {"status":0,"value":{"ELEMENT":"1"},"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

POST /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element 200 2255ms - 109b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element/1/displayed

debug: Request received with params: {}

info: Pushing command to appium work queue: "au.getElement(‘1‘).isDisplayed()"

debug: Sending command to instruments: au.getElement(‘1‘).isDisplayed()

info: [INSTSERVER] Sending command to instruments: au.getElement(‘1‘).isDisplayed()

info: [INSTSERVER] Socket data received (50 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":true}

info: Responding to client with success: {"status":0,"value":true,"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

GET /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f/element/1/displayed2001059ms - 89b

debug: Appium request initiated at /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f

debug: Request received with params: {}

info: Shutting down appium session...

info: Stopping ios

info: Sending sigterm to instruments

info: [INST] 2014-07-02 01:29:47 +0000 Stopped: Script was stopped by the user

       

info: [INST] Instruments Trace Complete (Duration : 23.735861s; Output : /usr/local/lib/node_modules/appium/instrumentscli0.trace)

       

info: [INSTSERVER] Instruments exited with code 0

info: Cleaning up after instruments exit

info: [INSTSERVER] Closing instruments client socket due to exit

info: Stopping iOS log capture

info: Killing the simulator process

info: [INSTSERVER] Instruments socket server was closed

info: Killing any other simulator daemons

info: Cleaning app state.

info: No folders found to remove

info: Cleaning up appium session

info: Responding to client with success: {"status":0,"value":null,"sessionId":"2bcd619b-b7fb-45f5-b20c-79caff8cd24f"}

DELETE /wd/hub/session/2bcd619b-b7fb-45f5-b20c-79caff8cd24f 200 1156ms - 89b

debug: Appium request initiated at /wd/hub/session

debug: Request received with params: {"desiredCapabilities":{"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator","browserName":""}}

info: App is an iOS bundle, will attempt to run as pre-existing

info: Creating new appium session d04b8af0-bf77-4c73-957a-9321af31b2df

info: Removing any remaining instruments sockets

info: Cleaned up instruments socket /tmp/instruments_sock

info: Cleaning up any tracedirs

info: Cleaned up /usr/local/lib/node_modules/appium/instrumentscli0.trace

info: Setting Xcode folder

info: Setting Xcode version

info: Setting iOS SDK Version

info: iOS SDK Version set to 7.1

info: Detecting automation tracetemplate

info: Not auto-detecting udid, running on sim

info: Localizable.strings is not currently supported when using real devices.

info: Not setting locale because we‘re using a real device

debug: Creating instruments

info: Not setting iOS and app preferences since we‘re on a real device

info: Starting iOS device log capture via idevicesyslog

info: Not setting device type since we‘re connected to a device

debug: Real device specified but no ipa or app path, assuming bundle ID is on device

debug: Starting instruments

info: Instruments is at: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments

info: [INSTSERVER] Instruments socket server started at /tmp/instruments_sock

info: Attempting to run app on real device with UDID 3d2cad7288a64a5445aa98a2cc220132f2cddd1c

info: Spawning instruments with command: /Applications/Xcode.app/Contents/Developer/usr/bin/instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate -w 3d2cad7288a64a5445aa98a2cc220132f2cddd1c io.appium.TestApp -e UIASCRIPT /usr/local/lib/node_modules/appium/node_modules/appium-uiauto/uiauto/bootstrap.js -e UIARESULTSPATH /tmp/appium-instruments

info: And extra without-delay env: {}

info: And launch timeouts (in ms): {"global":90000}

info: [INST] 2014-07-02 01:40:56 +0000 Start: Bootstrapping uiauto

       

info: [INST] 2014-07-02 01:40:58 +0000 Start: Got user: devexu

       

info: [INST] 2014-07-02 01:40:59 +0000 Start: Not using settings file.

       

info: [INST] 2014-07-02 01:40:59 +0000 Start: isVerbose:false

       

info: [INST] 2014-07-02 01:41:03 +0000 Start: Using node at: /usr/local/bin/node

       

info: [INSTSERVER] Instruments is ready to receive commands

info: Instruments launched. Starting poll loop for new commands.

info: Setting bootstrap config keys/values

info: Pushing command to appium work queue: "setBootstrapConfig: autoAcceptAlerts=false"

debug: Sending command to instruments: setBootstrapConfig: autoAcceptAlerts=false

info: [INSTSERVER] Socket data received (15 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Sending command to instruments: setBootstrapConfig: autoAcceptAlerts=false

info: [INSTSERVER] Socket data received (48 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":""}

info: Setting initial orientation to PORTRAIT

info: Pushing command to appium work queue: "au.setScreenOrientation(‘PORTRAIT‘)"

debug: Sending command to instruments: au.setScreenOrientation(‘PORTRAIT‘)

info: [INSTSERVER] Sending command to instruments: au.setScreenOrientation(‘PORTRAIT‘)

info: [INST] 2014-07-02 01:41:08 +0000 Debug: target.setDeviceOrientation("1")

       

info: [INSTSERVER] Socket data received (56 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"PORTRAIT"}

info: Device launched! Ready for commands

info: Setting command timeout to the default of 60 secs

info: Appium session started with sessionId d04b8af0-bf77-4c73-957a-9321af31b2df

POST /wd/hub/session 303 18457ms - 9b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df

debug: Request received with params: {}

info: Responding to client with success: {"status":0,"value":{"webStorageEnabled":false,"locationContextEnabled":false,"browserName":"","platform":"MAC","javascriptEnabled":true,"databaseEnabled":false,"takesScreenshot":true,"warnings":{},"desired":{"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator","browserName":""},"platformVersion":"7.1","app":"io.appium.TestApp","platformName":"iOS","deviceName":"iPhone Simulator"},"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}

GET /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df 200 1ms - 624b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element

debug: Request received with params: {"using":"xpath","value":"//UIATextField[1]"}

info: Pushing command to appium work queue: "au.mainApp().getTreeForXML()"

debug: Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Socket data received (6682 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"{\"UIAApplication\":{\"@\":{\"name\":\"TestApp\",\"label\":\"TestApp\",\"value\":null,\"dom\":null,\"enabled\":true,\"valid\":true,\"visible\":true,\"hint\":null,\"path\":\"/0\",\"x\":64,\"y\":72,\"width\":640,\"height\":920},\">\":[{\"UIAWindow\":{\"@\":{\"name\":null,\"label\"

info: Pushing command to appium work queue: "au.getElementByIndexPath(‘/0/1/0‘)"

debug: Sending command to instruments: au.getElementByIndexPath(‘/0/1/0‘)

info: [INSTSERVER] Sending command to instruments: au.getElementByIndexPath(‘/0/1/0‘)

info: [INSTSERVER] Socket data received (61 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":{"ELEMENT":"0"}}

info: Responding to client with success: {"status":0,"value":{"ELEMENT":"0"},"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}

POST /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element 200 2337ms - 109b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element/0/displayed

debug: Request received with params: {}

info: Pushing command to appium work queue: "au.getElement(‘0‘).isDisplayed()"

debug: Sending command to instruments: au.getElement(‘0‘).isDisplayed()

info: [INSTSERVER] Sending command to instruments: au.getElement(‘0‘).isDisplayed()

info: [INSTSERVER] Socket data received (50 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":true}

info: Responding to client with success: {"status":0,"value":true,"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}

GET /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element/0/displayed2001056ms - 89b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element

debug: Request received with params: {"using":"xpath","value":"//UIAButton[1]"}

info: Pushing command to appium work queue: "au.mainApp().getTreeForXML()"

debug: Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Sending command to instruments: au.mainApp().getTreeForXML()

info: [INSTSERVER] Socket data received (6682 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":"{\"UIAApplication\":{\"@\":{\"name\":\"TestApp\",\"label\":\"TestApp\",\"value\":null,\"dom\":null,\"enabled\":true,\"valid\":true,\"visible\":true,\"hint\":null,\"path\":\"/0\",\"x\":64,\"y\":72,\"width\":640,\"height\":920},\">\":[{\"UIAWindow\":{\"@\":{\"name\":null,\"label\"

info: Pushing command to appium work queue: "au.getElementByIndexPath(‘/0/1/2‘)"

debug: Sending command to instruments: au.getElementByIndexPath(‘/0/1/2‘)

info: [INSTSERVER] Sending command to instruments: au.getElementByIndexPath(‘/0/1/2‘)

info: [INSTSERVER] Socket data received (61 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":{"ELEMENT":"1"}}

info: Responding to client with success: {"status":0,"value":{"ELEMENT":"1"},"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}

POST /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element 200 2253ms - 109b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element/1/displayed

debug: Request received with params: {}

info: Pushing command to appium work queue: "au.getElement(‘1‘).isDisplayed()"

debug: Sending command to instruments: au.getElement(‘1‘).isDisplayed()

info: [INSTSERVER] Sending command to instruments: au.getElement(‘1‘).isDisplayed()

info: [INSTSERVER] Socket data received (50 bytes)

info: [INSTSERVER] Socket data being routed for ‘cmd‘ event

info: [INSTSERVER] Got result from instruments: {"status":0,"value":true}

info: Responding to client with success: {"status":0,"value":true,"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}

GET /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df/element/1/displayed2001058ms - 89b

debug: Appium request initiated at /wd/hub/session/d04b8af0-bf77-4c73-957a-9321af31b2df

debug: Request received with params: {}

info: Shutting down appium session...

info: Stopping ios

info: Sending sigterm to instruments

info: [INST] 2014-07-02 01:41:13 +0000 Stopped: Script was stopped by the user

       

info: [INST] Instruments Trace Complete (Duration : 21.512508s; Output : /usr/local/lib/node_modules/appium/instrumentscli0.trace)

       

info: [INSTSERVER] Instruments exited with code 0

info: Cleaning up after instruments exit

info: [INSTSERVER] Closing instruments client socket due to exit

info: Stopping iOS log capture

info: Killing the simulator process

info: [INSTSERVER] Instruments socket server was closed

info: Killing any other simulator daemons

info: Cleaning app state.

info: No folders found to remove

info: Cleaning up appium session

info: Responding to client with success: {"status":0,"value":null,"sessionId":"d04b8af0-bf77-4c73-957a-9321af31b2df"}


java运行的代码:

package com.saucelabs.appium;


import static org.junit.Assert.assertTrue;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileBy;


import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;


import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;


/**
 * Simple <a href=http://www.mamicode.com/"https://github.com/appium/appium">Appium test which runs
 * against a local Appium instance deployed with the ‘TestApp‘ iPhone project
 * which is included in the Appium source distribution.
 * 
 * @author Ross Rowe
 */
public class WiMyOffice {


  private AppiumDriver     driver;


  private List<Integer>    values;


  private static final int MINIMUM = 0;
  private static final int MAXIMUM = 10;


  private Point getCenter(final WebElement element) {


    final Point upperLeft = element.getLocation();
    final Dimension dimensions = element.getSize();
    return new Point(upperLeft.getX() + dimensions.getWidth() / 2,
        upperLeft.getY() + dimensions.getHeight() / 2);
  }


  private void populate() {
    // populate text fields with two random number
    final List<WebElement> elems = driver.findElements(By
        .className("UIATextField"));
    final Random random = new Random();
    for (final WebElement elem : elems) {
      final int rndNum = random.nextInt(MAXIMUM - MINIMUM + 1) + MINIMUM;
      elem.sendKeys(String.valueOf(rndNum));
      values.add(rndNum);
    }
  }


  @Before
  public void setUp() throws Exception {
    // set up appium


    final DesiredCapabilities capabilities = new DesiredCapabilities();
    capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
    capabilities.setCapability("platformVersion", "7.1");
    capabilities.setCapability("platformName", "iOS");
    capabilities.setCapability("deviceName", "iPhone Simulator");
    capabilities.setCapability("app", "io.appium.TestApp");
    driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),
        capabilities);
    values = new ArrayList<Integer>();
  }



  @After
  public void tearDown() throws Exception {
    driver.quit();
  }


  @Test
  public void testHideKeyboard() throws Exception {
    driver.findElement(By.xpath("//UIATextField[1]")).sendKeys("12");


    final WebElement button = driver.findElement(MobileBy
        .AccessibilityId("Done"));
    assertTrue(button.isDisplayed());


    button.click();
  }


}