Appium Appium 每次都会执行 IOS 用例时都要重新 create new session,重新启动 simulator

purplum · 2013年12月26日 · 最后由 杨雅洁 回复于 2014年07月29日 · 1193 次阅读

记得以前在 IOS6 的时候在执行第二个用例时都会使用当前已经启动或存在的 simulator。
现在每次执行时都会 kill 掉当前 instrument 的 instance,然后重新 create 一个新的 intrument。
请问,有人知道如果解决这个问题吗?

共收到 8 条回复 时间 点赞

我当前使用的 appium 版本时 0.12.2, 难道是新版本的 appium 就是这种 create new session each time 的机制了么

看了下 console 的 log, 确实是 kill 掉了然后重新 create new.
试过带-k 或-m 参数起 appium 似乎也不行.

info: Creating new appium session db9df0bf-4770-4ef5-8351-04386280af49
info: Removing any remaining instruments sockets
info: Cleaned up instruments socket /tmp/instruments_sock
info: Parsed app Localizable.strings
info: Killing the simulator process
debug: Launching device: iPhone
info: Parsed app Info.plist
info: Wrote new app Info.plist with device type
info: Starting iOS 6.* simulator log capture
debug: No device id or app, not installing to real device.
debug: Creating instruments
info: Instruments is at: /Users/me/Downloads/xcode4/Xcode.app/Contents/Developer/usr/bin/instruments
info: [INSTSERVER] Instruments socket server started at /tmp/instruments_sock
info: Spawning instruments with command:

你的初始化 driver 是否放在 setup 方法里?

xunit 的 setup 方法会在每个 testcase 前执行一遍。 我觉得现在的设计还是蛮合理的。 @seveniruby 怎么看?

#4 楼 @lihuazhang 他没描述清楚 连测试用例代码都没贴, 不太好下结论.对于简单的应用, 放入 setup 就足够了. 如果是路径很深的, 可以自己设计复用, 可以放入更高层级的 setup 里面,

多谢两位的回复。
@lihuazhang , 是的,SwipableWebDriver 是在 setup(beforeClass) 里做初始化,同时在 tearDown(AfterClass) 里面做 stop 和 clear 操作.
@seveniruby 我们的 case 继承了很多父类的方法和处理,对 driver 的 create 和 initial 都是在 super class 里做的处理,即使贴了 case 的 code 也看不到什么。另外,“对于简单的应用, 放入 setup 就足够了..可以放入更高层级的 setup 里面” 这句话可以详细解释下吗?把哪些处理放到 setup 里?Appium kill 掉 instrument 然后重新 create new instrument 可以通过 setup 进行控制?还是说在 Capbilities 里传额外的参数?

使用 pythont 做 test case 的也是,当使用 python 的 unit test 写 ios test case 时每个 test case 都会重新打开模拟器。

如果用 page object, 在初始化页面里面可以加一个 driver 继承的方法,判断下 driver 是否为空,不为空则继承 driver.这样批处理 case 时候就不会重新 New 了.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册