如何获得ngScenario中的element的text的值

在AngularJS的ngScenario测试中, 我们有时需要对返回的值做一些特殊的处理,然后再进行比较。

例如我们验证select的值为abcd

expect(element("select").text()).toBe("abcd")

但用jquery发现这个select的值为

\n   abc   \n

前后会多出一些空白字符。我们要做的是先对其进行trim操作,然后与abcd对比即可。

expect(_.str.trim(element("select").text())).toBe("abcd")

注意_.str.trim是Underscore.String提供的。

但这样是行不通的,_.str.trim函数接收到的是一个promise对象,所以里面没有text的值。

要正确的获得值,需要做一些改进。在这里有一些讨论,可以参考:

var textPromise = element('select').query(function (nameElement, done) {
var text = _.str.trim(nameElement.text()); // Can finally access this guy!

// The first param null indicates a nominal execution, the second param is a return of sorts
done(null, text);
});

// Passes
expect(textPromise).toBe('abcd')

这样,通过query这个函数,即可获得真正的text的值了。

这里还有一些别的例子,请参考原文。

爱上AngularJS的几个阶段

上个月去休假前,在研究用Cordova写一个手机的软件。在研究UI表现方面,花了一些时间和精力试用了一下AngularJS。这个玩意儿在ThoughtWorks技术雷达上出现过好多次了,公司CTO也强烈推荐这玩意儿,所以就用了。花了一小会儿时间看了AngularJS,然后就慢慢地用上了。

第一阶段:爽

AngularJS入门总是很快,几钟就可以搞定一个简单的页面。官网首页的Demo已经很强大,像我这种jQuery都不怎么搞的会的,绝对会立刻放弃jQuery投入AngularJS的怀抱,因为你只需要搞定一个model和controller,其他的DOM上的事情就不关心了。

这阶段,主要的就是不断的体验这种directive,爽的一塌糊涂。官网的Tutorials一步一步的做下去,很快就能体验到AngularJS提供的大部分功能和e2e功能。当我开始半灌水的时候(其实当时只有一点点水),新的项目开始了。经过一个星期的反复折腾、沟通和忽悠,终于在最后阶段用一个Showcase说服了客户,决定在新的项目中使用AngularJS。

第二阶段:痛苦

新的需求的到来,让一个完全无AngularJS经验的团队显得很无助。各种奇葩的问题,让我们只有不断的google寻求答案。答案当然也有一些,当面对directive、link等名词时,才发现原来AngularJS的坑那么深。还好办公室扎爷有很深厚的AngularJS使用功底,为项目初期的疑难问题做了很多的工作。以下三篇文章都是我们项目中的问题的解决。* angularjs ng-option ie issue解决方案

这阶段主要是折腾AngularJS的各种文档,google问题。有时候像无头的苍蝇到处乱撞。要顺利的度过这个阶段,得静下心来,系统的再看看AngularJS相关的东西,《用AngularJS开发下一代Web应用》这本书也可以买来看看。这本书比较浅显,稍微熟悉AngularJS的一天就能看完。听说网上已经有开源版本出来了,不愿意花钱的也可以搜一下。

第三阶段:起死回生,自力更生

当你发现其实AngularJS或者AngularUI提供的各种directive都不能满足你的要求的时候,该到了写directive的时候了。这个有点类似于以前玩WinForm,当所有的控件都不满足要求的时候,就得自己写控件了。这个玩意儿我认为是AngularJS比较核心和困难的部分。

最近一个多星期我都在写validate的directive,也遇到了一些问题。但由于对AngularJS的用法更为了解以后,解决问题起来就显得稍微有了一些谱。

第四阶段:深入理解,融会贯通

这阶段,我认为还没达到,由于项目的需求还没要求能力达到这种程度。所以要达到这个阶段,我认为需要自己去努力,在AngularJS的源代码中去寻找真理了。

加油吧!

华为三年纪念——(12)剧终

清明节过后去给PL沟通离职的事情。当时我espace给PL说有点事情想谈谈。走在去会议室的路上,PL不断问我啥事啊,直到我说出来要准备离职了。他说不感到意外。和他聊了一刻钟左右,他也支持我离开这里去寻找一片更适合自己生长的土地。这里天天加班,技术上,人上都在逐渐埋没人才,呆的越久越让人发现没意思,和外界的竞争力也越来越低。不在这里迸发出去,就只有在这里沉默了。

清明节过后,PL就给我们软件部经理说了离职的事情。其实这个时候说离职是不怎么明智的,后来才知道,由于这时候正在评奖金,还没最终定下来,一旦提出离职等,奖金是会收到影响的。我几年来的绩效都是B+,奖金肯定是有的,但是也会打折。这个就全看领导的眼色了。

软件部经理听说这个事情,第二天就找我沟通,一连谈了一个多小时。不停地给我画饼,不停地贬低别的公司,不停地说我的选择是错误的。还说华为的路子很多,这个部门不行还可以去另外的部门。领导的话,就当笑话听听吧。后来实在遭不住了,也没法让他给我同意,算了,我还是退一步,说再回去想想。

当然,决心已定,哪里有回头的路。第二天我就发了邮件说还是坚持。只是,后来领导的态度就变了。由于要确定离职的时间,我说找他再沟通沟通,不理我。经过几次的各种电话、espace,都不理我,都说忙。好吧,第四天早上,我看到他来了,就直接到他座位上,问能不能有几分钟时间再聊聊。这时候他也说忙,但事不过三,当然他也没法推了。让我等了一下处理了事情,然后开始谈。最终确定了时间为5月15号离职,符合我的预期。这样我还有半个多月的时间,抽出十天到广州去和老婆孩子一起玩一下,剩下的几天时间回来休息一下。

以为事情就这样就风平浪静了。我问了一下之前离职的几个兄弟,他们都没有我这么折腾,一般都是给PL说了然后就交接工作卷铺盖走人的。我这个折腾了半天,这个沟通那个沟通。人力资源的也找了我一次,说支持我的。只不过在我和领导确定了时间之后,第二次又找到我,说部门现在人手紧,什么产品又确认,上面有挽留我的意思,希望我能6月底再走。

凭啥呢?反正我的离职电子流已经提交,一个月不放的话,我会想办法的。人力资源的HRP说,只能找部门大主管了。好吧,过了软件部经理这一关,还要搞定更大的BOSS,真是烦人。

首先写邮件,第二天就回绝我说不行,说人力紧张咋咋咋的。然后,我说找个时间聊一聊。没搭理我。这段时间正好是部门换大主管的时候,各种不爽都在这里爆发。最后,在庐山地震早上,我到了大领导,说了我的意思。大领导还要稍微好点,PK了十几分钟,同意了以产品的TR4A点作为事件,也就是5月10号左右。

最后,软件部经理给我定为了5月15号。经历了两个星期的各种折腾,终于搞定了。

接下来就是工作的交接。PL说给我找了个外包的员工来接手我的CI的工作。这个外包员工的技能实在是太低了,连个IE都不怎么会用。由于CI是我搞了很久才搞出来的,1个月不到的交接期要把我半年多的积累都交出去,还是很难。更难的是所谓的CI的星级。本来CI就是用来做持续集成的,是一种辅助工具。在这里硬是搞成了一种指标,各种指标计算出来一个星级,有些指标要达到是相当困难。有时候为了达到指标,为了让领导看起来觉得好,会想尽一切办法,让星级上去。我们项目要达到4星级。前期,想了一些合理的办法能够达到四星,后来就再也没有达到过了。我也想过数据造假作弊,但这些实在是真的没有必要。

刚开始几天都放得比较松。后来PL说不行啊这样,我就只好给他施加压力。给他说成研所的1,2,4都是晚上要加班的啥啥啥。本来计划需要2天的时间搞的东西,一天就要搞定。没办法,到了华为就只能接受华为的文化。所以,这个小子就加班了。

为了让他能够有一个记录也更是为了我能够展示交接的工作量,我给他出了几十个题目。里面涉及到工作中可能会遇到的各种问题。叫他自己整理好。最后,交接工作基本上OK。

最后一个月,每天都是准时上下班,保证工时够。在公司就把交接的事情做好就OK了。最后几天,办理各种手续各种签字。

最后一天,收拾好被子和床,退了电脑,退了工卡,看了一下午的杂志。6点钟,要下班了。拿着手头的东西,给朝夕相处的同事道别。其实还真的舍不得这些同事,只是真的要离开了。眼睛觉得有一些湿润,还有一些的依依不舍。

出门,最后一天签到,衬着夕阳,离开了华为。

在这短短的两年半的时间,自己成长了很多,有了自己的家庭,学会了在大公司里如何做人、做事。要感谢华为的培养,跳出去,也会体现出自己的价值;要感谢一起做项目的同事,大家的奋斗场景现在回想起来也是历历在目;最后要感谢老婆的鼓励与指点,给了自己一个选择未来的机会。

6月3日,新的起点,ThoughtWorks,更大的挑战,更丰富的职业选择,加油~!

华为三年纪念——(11)面试

12年年底,一直在忙项目,在空闲时间,买了一些书补充知识,另外在猎头网,51job等网站上,投了简历。

第一次猎头找我是问我能不能去韩国NHN公司,这家公司待遇挺好,但最终他们不需要做嵌入式开发的;后来又有问我要不要去诺西的,说实话有华为在,诺西的日子真的不好过,说不定过去了就倒闭了还说不准;后来就没什么音讯了。一直到春节之后,都没有什么动静。

春节前后的日志都是加班的日子,没日没夜的加班。整个团队已经在打疲劳战,每个周末两天的休息只能休一天,连着休的长假也一般砍掉一半。每天晚上9点以后才走人。当然,我还算好的了,晚上加班到凌晨都是常态。生病了无法休息,得赶进度。项目经理每次都把发版本的时间定在周一,这样周末两天就必须要抽一天加班,有时候必须要两天加班。系统的不稳定,硬件软件的不配合,在这个电信级的超大系统中展现的淋漓尽致。整个团队,都在崩溃的边缘,每个人都想有一个时间能够停下来休息一下。奔跑了好几个月了,都没能停下来一下。

然而,春节后,开发代表还给我们开了个会,说我们要提前一个月达到TR5,还问我们兴不兴奋。我只想说违背客观规律的瞎扯淡,只能体现项目管理的混乱与无能。人没有见多,时间却又要减少一个月,如何达成?开发代表只想着马儿不吃草就可以满地跑,哄哄我们就可以让我们继续?

这次开会后,就开始有点零星的水果作为问候了。当然,这些水果基本上都是9点以后才给你拿过来,随便吃吃罢了。当然,过来视察一下还是主要目的了。就这样,每天都反复反复,每天都在单位吃饭。在华为基地,可见每天下班后,都有很大一群人,在园区里散步,然后回去加班。一个星期,只能周六晚上和周天,能够在家和家人吃吃饭,其他时间全在公司耗着。

必须要改变。

3月底,带着试一试的心情,投了ThoughtWorks的简历。不想,第二天就给我电话面试,聊了半个多小时。通过后再约了周五去笔试。笔试真是令人抓狂,有机会大家做做就知道了。当然,明白了其中的道理以后,换个思路就容易做了。笔试完了以后,就准备做HOMEWORK了。这个我还比较有信息。我选了一题,精心准备了一下。耐心的等待了几天后,叫我去做最后的面试。

最后的面试,和两位TWer一起。先准备环境搞了好半天,中途的时间就一直聊天。还好我的东西多,随便聊。等环境搞好了以后,一起看了一下程序,介绍了思路,然后做Pair。他们立刻指出了我测试用例写的不怎么好,然后做一个需求。整个过程还比较顺利,但还是有点紧张,这在后面的面试中也给我提出来了。这一关过了以后,就是熊杰和周周一起面试了。

当时我还真没听清楚熊杰的自我介绍,隐约觉得是他吧。中间问了许多问题,还做了英语的介绍。最糟糕的是当时只准备了自我介绍的英文,结果要介绍项目,郁闷。突然就紧张起来了,憋足的英语介绍,突然感觉估计要挂了。还好,后来慢慢适应了,就不那么紧张了,讲完了。

中午和熊杰一起吃了饭,下午就回家了。由于是周五,HR说下周才能有结果。整个周六周天都是在紧张中度过的,一直在猜测是否搞定。星期一去上班的时候,一直等电话啊,直到下午两点过,终于迎来了电话。

刚开始的对话,问到了我这样那样的不足,以至于前20分钟的时间,我都觉得我没希望了。直到后来,HR说给我说一下Offer的事情,才终于尘埃落定。可以准备离开了。

这段时间依然加班,清明节放假加两天,我给PL沟通了离职的事情。

华为三年纪念——(10)疯狂的一年

婚假终于连着春节一起休了,在广州呆了20多天,妈妈和在肚子里三个月大宝宝和去了趟澳门。也算是个小旅游了。广州的冬天也冷得很,感觉比成都还冷。

过了春节回来,似乎没啥事情做了。之前做的项目戛然而止,搞得我回去都觉得奇奇怪怪的。老项目要做一些新的需求,大家又开始捣鼓以前的东东了。这段时间还不算太折腾,没事就走了。

3月底,由于项目组没人懂Linux和多核方面的知识,为了新的项目,领导指派我到武汉去两个月,将武汉的Linux单板的东东接回来,这算是我在单位第一次出差。两个月时间说长不短,如果真的那么长的话,完了后去广州接老婆就怀孕6个月了,坐飞机不好坐了。

其实过去接那些项目,上手也挺快的。Linux嵌入式系统我也熟悉,自己也编译过内核啥的,对于这个单板来说轻车熟路的就搞好了。到武汉也没人管我,住在光谷软件园E1宿舍,步行几分钟上班,附近交通还算好。就是楼下那个法院养的死狗,每天早上都很早就在哪里吼叫,搞得我最后没办法还买了防噪音耳塞。

结果这些任务,两周时间我就搞定了,期间还乘着周末去逛了一下长江大桥,逛了一下步行街。最后过清明节的时候自己还跑去樱花园玩了一天,好像没啥意思。油菜花在下面,樱花在上面,全是油菜花味道。公交车、出租车在那里全部瘫痪。当时风大快下雨了,我走了两三站路,终于看到个比较空的公交,随便跳上去,走出了这个破地方再打车回光谷。还好,武汉的出租车价格便宜,感觉走了很久的路也才几十块钱。

这段时间似乎还算是比较闲。当时车管所正在弄电脑考试的系统,为了赚钱,我开始开发一款平板上的模拟系统。业余时间就在网上不停的找视频,找规则。弄清楚规则后,还是用状态机这玩意儿,写了个安卓程序,装在平板上。通过蓝牙和车载的设备、IO进行通讯。最终还是做的挺好,和考试的功能差不多。但最终没卖掉,太贵了。这段经历也说明了,有技术不一定能赚钱,是否能有市场才是真正的考验。

4月初,坐动车到广州接上了老婆回家。. 6月也不是太忙,回家陪老婆的时间很多。7月份,10月的辛苦终于盼到了,可爱的小丁仔出世了。小家伙也挺能折腾的,每天睡在一起,晚上爸爸妈妈也睡不好觉。爸爸有时候半夜还要起来帮忙洗屁股。虽然很累,但看着丁仔一天一天的长大,还是挺欣慰的。

8月底,又听说要搞新的项目了。由于部门的资金问题及策略问题,这一年不断的再输出人。到真正要做项目的时候,要人,有没有了。新项目算是事关部门生死存亡的一个,领导到处宣传如何如何的好。但到真正开发的时候,又开始了“迭代0”。需求没搞清楚,就开始瞎胡闹了。软件部经理竟然要求大家现在就把代码开始写了。我们要做啥东西都不知道,写啥代码?

9月份,也在不紧不慢中度过。虽然说得比较严重,但大家都觉得没啥。我也觉得这玩意儿可能也和去年的项目一个下场。但9月底的时候,紧张的气氛越来越浓了,PL不断的告诉我们项目的时间紧迫,只有三轮迭代。更悲剧的是,他们算了下,每轮迭代的时间,包含了方案讨论、简单设计、编码、代码检视等等,内容之多。然后再告诉我们,编码时间,算下来就只有2天时间。

好吧,明摆着就是要我们加班。9月开始,一直都是在”抽时间写代码“,可见代码质量有多好。PL告诉我们,软件部经理觉得我们晚上9点钟走人太早了。软件部经理认为晚上9点走人,项目算是不紧的;10点半走人,项目算是刚好;凌晨走的,项目算是有点紧。听了这种话,只能说这种领导太日遭。只觉得在这种团队中,也没啥干头了。

我还是做了几天样子坚持到10点走,后来还是每天8点40走人。凭啥我们要生活在这样的环境下?当我们的身体累垮的时候,他们也绝不会关心你的。所以,还是要自己保命为好。

9月份开始,一直到年底,每周双休就休一天。没加班工资,算内部调休,也就是说没有在华为的W3上登记的,可以随时一笔勾销的调休。事实上,整个公司在6月份,就以“提高效率,减少加班”为理由,不发加班费。但项目肯定是要加班的,即便是效率再高,真的搞的定的时候,为了做样子,也要过来”加班“。在这里,我越来越感受到资本家是怎样剥夺剩余劳动力的了。没有休息,天天加班,没有盼头。累死累活得不到一句好话,这样的地方,怎能待下去?

11月,既然我无法改变团队,那我只能调整自己。在这里继续窝下去也只能荒废了青春,拖垮了身体。我在各大网站上填了简历,在休息时间复习一下各种知识,为离职做好了准备。