感谢分享!方法很不错,确实是一个十分方便灵活的方法。但有些地方看得不是太懂,不知道你是否方便解下疑?
最后的 维护一个版本的对应关系 这个对应关系具体是在哪个位置维护?是在 case 里面吗,还是抽取出来放到一个统一的目录下,通过命令行参数选择使用哪个版本?
你在拼装函数里使用的参数 env
是起到什么作用?是保存 module 名称与 module 对象映射关系的 dictionary 吗?
如果可以的话能否举一个比较具体的例子?如有两个 version 不同对应 page 和 element 不同的项目,里面具体如何采用这种插件的方式来让用例通过版本对应关系自动选择相应的 page 和 element 对象。上次的 重构自动化 1 里面说得挺全的,但这次只给了关键代码,可能有不少人一下子看不懂。
#11 楼 @vigossjjj 看到了,非常感谢!
#23 楼 @f25093419 实战部分主要是基于 Java 的。
其实这些 API 在不同语言上只是写法不一样,用法基本都是一样的。
现在调试不用选 remote debug 了?
怎么设定调试能否详细说一下?还是说不用设定,建好有就直接有了?
好快,有闲置 mac 可以折腾就是不一样。。。
能否顺便试试 drag 方法在模拟器的 scrollView 上能否正常使用?目前的 UIAutomation 在 iOS 7.0~8.x 的模拟器上 drag 方法都 drag 不了 scrollView。
请使用 markdown 语法。详细使用方法请看 排版说明 。
看了一下,和你应用有直接关系的 log 只有 1 条:
Jun 12 10:20:49 iPhone LeFeng[291] <Warning>: Bugly_INFO: Rqd initLocalService: fetch server strategy
你确定这是从应用启动到出现你说的那个问题这段时间所有的 log 了吗?
#2 楼 @yuwuhen333 你可以试试改 autoLaunch
结合 install app 和 launch 。具体怎么设请看官方文档。
#3 楼 @swddc
http://appium.io/slate/en/master/?ruby#appium-server-capabilities
http://appium.io/slate/en/master/?ruby#start-activity
用 autoLaunch 配合 start_activity 做。
下次提问前麻烦先把官方文档看完。
#11 楼 @okokhihi scroll 直到指定元素出现用 scrollTo :http://appium.io/slate/en/master/?python#scroll-to
#12 楼 @jennifer 不明白你的问题。
列表是什么列表?tableview 还是 listview 还是什么?
刷新完成的判断标准是什么?
问问题麻烦把所有条件说清楚,像报 bug 那样问问题。
请使用 markdown 语法。代码使用代码块。不知道 markdown 语法的请看 排版规范
问问题说清楚点,你的 app 是指被测应用还是 appium 自己会装的 Unlock.apk 之类的?不安装是指安装部分不用 appium 来做还是什么?
#9 楼 @qi_ling2005 你用的是 selendroid 模式吗?你的 xpath 或其他定位方法正确吗?
selendroid 使用的 xml 和 uiautomatorviewer 看到的完全不一样的哦。
#2 楼 @irisliu 两个 Library 的实例是分别独立的。它们各自有一个缓存池存储自身的 driver 实例。所有方法调用都是调用 driver 实例的方法。
我想你想做的是在 appiumLibrary 里面加入 Selenium2Library 的方法吧(毕竟 Selenium2Library 封装的方法数量更多,用起来也更方便)。这个只能你自己结合这两个 library 创造一个自己的 Library 了。
实现的思路主要是把 Selenium2Library 的所有方法里面获取 driver 实例的方法改为获取 AppiumLibrary 的,然后就可以用了。名字重复的一定要看清楚到底实现是否一致。
#4 楼 @lihuazhang 原来是官方的。。。那要发个 pull request 来 fix 下。。。
#2 楼 @lihuazhang 这种也行。
不过正常不是应该只有 findElement 方法找的元素才会缓存吗?executeScript 返回的不一定是元素,所以没有缓存也正常。