写的很好。分享其实不仅仅是帮助别人,同时也是提升自己。
写学习笔记时可能学到啥就写啥,没有把它们连成线,而且因为只是自己看,也不会太 care 写得好不好。
但分享时就需要提炼精华,把整个学习的过程连成线,并且分层描述,方便别人阅读。其实这个时候也是总结自己的学习过程的时候,总结过后记忆会更牢固,而且也更有层次,即使以后自己要翻查也方便得多。
#5 楼 @jennyhui 其实也不仅仅是 “关键字驱动的框架” ,主要是想让被 “关键字驱动”,“BDD” 这类名词搞得有点混乱的同学搞清楚这些东西实际上不是一个完整的测试框架的全部。
关键字驱动的话其实最简单的做法就是:做个表格到代码的转换器。
表格:
action | params |
---|---|
openBrowser | browserName="Chrome" |
转换后代码:
class TestCase(ActionBase, unittest.TestCase):
# a test case
def open_browser(self):
# step of test case
self.action_call("openBrowser", {"browserName":"Chrome"})
然后这个 action_call 的实现里调用对应的 action 方法来执行实际动作:
class ActionBase:
...
def action_call(action_name, params):
# get action function in this class
action_fun = getattr(self, action_name)
# execute action
action_fun(**kwargs)
...
def openBrowser(browserName=None):
if browserName == 'Chrome':
self.driver = webdriver.Chrome()
...
这样核心层使用 unittest ,工具层使用 selenium ,适配层用关键字驱动。
感谢分享,一直都想玩 monkeyrunner ,但一直都没时间去玩。。。
不过排版能否调整一下?不知道你用的是什么 markdown 工具,现在看到的每一行前面都有个无序列表的符号,反而真正的要点变得不突出了。
文章的要点最好先用大标题,然后小的列表再采用列表格式。
另外, markdown 对段落前后是否是空行、符号前后是否为空格比较敏感,所以最好养成分段的时候段落之间空一行的习惯。
详细的分享是好的,但是排版不专业的话可能会有一部分人读起来不爽。
#2 楼 @tobecrazy 是的。如果从层级上 PageFactory 属于适配层的东西。但由于它应用场景有限(主要用于 UI 的自动化,非 UI 自动化不一定有 page 这个概念),所以不是十分流行。
#3 楼 @eurekasaber 你直接发 keyEvent 试试?
你的文件名不要和模块名重名行不。。。
你的 Traceback 已经明显告诉你在第一个 import 的时候执行了你的 theme 语句,所以你的 import 明显有问题。
不知道 import 的具体工作过程和正确用法的话,可以看看 5. The import system 或者 PEP 0328
感谢分享!方法很不错,确实是一个十分方便灵活的方法。但有些地方看得不是太懂,不知道你是否方便解下疑?
最后的 维护一个版本的对应关系 这个对应关系具体是在哪个位置维护?是在 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 做。
下次提问前麻烦先把官方文档看完。