在watir中使用html定位link
今天遇到了一个变态的link,无法使用id、name、text、href定位,xpath也非常难找,具体如下: <a style="cursor:pointer" onclick="do_submit()"><img/></a> 最后使用html方式成功定位到了,代码如下: $browser.link(:html, /do_submit/).click 参考文档:http://stackoverflow.com/questions/1459420/how-can-i-click-a-link-using-its-html-with-watir
使用Selenium+Eclipse/Netbeans遭遇java.lang.NoClassDefFoundError: com/google/common/base/Charsets报错
昨天一个同事在使用Selenium+Netbeans进行自动化测试Demo的时候,遭遇了一个报错,信息如下: java.lang.NoClassDefFoundError: com/google/common/base/Charsets at com.thoughtworks.selenium.HttpCommandProcessor.getOutputStreamWriter(HttpCommandProcessor.java:149) at com.thoughtworks.selenium.HttpCommandProcessor.getCommandResponseAsString(HttpCommandProcessor.java:176) at com.thoughtworks.selenium.HttpCommandProcessor.executeCommandOnServlet(HttpCommandProcessor.java:118) at com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:101) at com.thoughtworks.selenium.HttpCommandProcessor.getString(HttpCommandProcessor.java:275) at com.thoughtworks.selenium.HttpCommandProcessor.start(HttpCommandProcessor.java:237) at com.thoughtworks.selenium.DefaultSelenium.start(DefaultSelenium.java:100) at wordpress.demo.WordpressDemo.setUp(WordpressDemo.java:13) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:551) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:213) at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:138) at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:175) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:107) at org.testng.TestRunner.privateRun(TestRunner.java:768) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) [...]
解决Fiddler查看Post参数中文乱码的问题
今天一个同事问我,为什么用Fiddler查看Post的中文参数,是一堆乱码,如下: 需要在注册表中增加一个键值: HKEY_CURRENT_USER\Software\Microsoft\Fiddler2\HeaderEncoding 设置值为gb2312即可,如下图: 大功告成:)
转一篇:每天只问小孩四句话,改变孩子一生
本文转自:http://www.newsmth.net/bbstcon.php?board=ChildEducation&gid=30161 有位父亲他对女儿的教育方式比较独特,他从来没有辅导过女儿做功课什么的,就是每天回来跟女儿聊十分钟,只聊四个问题,就完成了他的家庭教育。这四个问题是: 1,学校有什么好事发生吗? 2,今天你有什么好的表现? 3,今天有什么好收获吗? 4,有什么需要爸爸的帮助吗? 看似简单的问题背后其实蕴涵着丰富的含义: 第一个问题其实是在调查女儿的价值观,了解她心里面觉得哪些是好的,哪些是不好的; 第二个问题实际上是在激励女儿,增加她的自信心; 第三个问题是让她确认一下具体学到了什么; 第四个问题则有两层意思,一是我很关心你,二是学习是你自己的事。就是这简简单单的四个问题,包含了很多关爱关怀在里面,事实上也证明很有效。 在教育理念中,要把孩子教育好,最关键的就是亲子关系要处理好。如果家长在孩子心中建立起绝对的责任,孩子相信家长无条件地爱着自己,相信家长所有批评、表扬的出发是为了自己好,如果孩子在潜意识里对此达到完全相信,那么这种关系是良性的,是相互关爱、相互支持、相互理解的稳定关系。在这种情况下,所有教育孩子的最简单的事情,用苏联大教育家苏霍姆林斯基的话说就是“伴随孩子成长”。但是,现实生活大部分人的亲子关系是不稳定的,或者说是扭曲的,孩子并不能真正信任家长。 谁家的父母都是爱自己的子女的,但中国98%的家长错把爱的方式当成了爱。比如给孩子最好的东西吃,最好的衣服穿,这只是一种爱的方式,并不是爱本身。而家长们的爱也经常是有条件的,比如会出现只要这次考试得了前三名,就带你去哪里玩等等。 爱是一个生命喜欢另一个生命的感情,是一种平等的关系,是无条件的,是一种整体接纳的,是要让对方接收到的,要真正做一个好家长并不难,要教育好孩子一定要注意下面几句话: 1,绝对禁止高压/打骂孩子的做法,建立平等的关系。 2,真正地无条件爱孩子,给予孩子精神意义上的爱。 3,一定要尊重孩子的独立人格。 4,用正面的方法教育孩子,时常对其鼓励表扬。 5,调正亲子关系,这是最重要的一点。 6,要注意孩子的人格精神。 如果真正理解了以上的六句话,教育好孩子就是易如反掌的事情了。
转一篇:在创业公司工作四年,如何赚百万
原文地址:http://www.iceo.com.cn/chuangye/73/2012/0306/243034.shtml 有人在Quora问了这个问题:What startup could make me a millionaire in four years if I got hired as an emplyee today? Symbolic Analytics的创始人Brandon Smietana在下面做了很长的回答,内容很精彩,不过请勿对号入座: 大多数创业公司的退出(exit),都是通过M&A(并购),而不是通过IPO(首次公开募股),现在大多数的M&A价格都低于3000万美元,最典型的价格是1500万美元,现在我们来假设一个最乐观的退出案例,从其中的数据中算出,我作为创始人和CEO,能够拿多少钱;从而计算出,你,作为一个员工可能赚得的利益。 (一) 假定案例 1)我拿到1000万的投资。 2)投资人拥有公司50%的股权(乐观估计)。 3)我将公司以3000万的价格出售。 4)我拥有30%的外流通股(Outstanding Share) ,非常乐观的估计。 投资人还拥有优先股,通过并购,他们首先把自己投入的钱收回来,然后再参与省下的股权收益分红。 1)在3000万的退出中,投资人首先拿回他们投入的1000万,剩下2000万。 2)然后,优先股股东吃掉省下2000万的50%的利益分红,于是他们拿走另外1000万。 3)现在,整个脱售的现金只剩下1000万,分享这份利益的关系者包括大众股东,公司员工,创始人和管理团队。 我,作为创始人和CEO,享有最多的普通股股权,价值这1000万美元的大概600万。省下的400万利益归属其他所有的普通股股东(包括所有的公司员工) 最典型的早期员工,在利益分红中能拿到的资产不足CEO的1/30,因此,一位非常重要的早期员工,能够从脱售中取得20万美元的利益。 现在,让我设想得不那么乐观,相对实际一点。70%进入A轮融资的创业者,除了工资,其他什么利益都无法从公司获得。因此作为一名员工, 1)有70%的可能,如果你在A轮融资的时候加入创业公司,你的普通股是没有价值的。 2)与A轮以前的早期员工相比,A轮以后的员工通过股权或者期权能拿到的利益要少很多。 3)在A轮融资以后,新员工能够拿到的最好的股权大概在0.3%左右。 4)无论什么样的员工,他们的股权都会在管理层更换或者新一轮融资中被稀释。 (二) 如果我进入的公司是”下一个Facebook”呢? 硅谷在过去的十年里发生了惊天动地的变化。这些变化,同时作用并且影响着IT员工们能从公司那里获取的利益。 如果你在1998年以前(包含1998年)加入了一家在将来很成功的创业公司,那你一定已经赚了很多钱。但是,如果你加入的是Facebook,你所能获取的利益价值可能就无法跟前者媲美了。那么,那些加入“下一个Facebook“的哥们儿,希望可能就更小了,以下是原因: 谷歌的早期员工在加入时,谷歌的估值还很低。 1)谷歌的估值,一路从4000万涨到了2000亿。 2)那些最早加入谷歌的清洁工,从谷歌获得价值1000美元的股权,在2008年也价值400万美元。 3)一个获得了5万美元股权的工程师,他的股权在2008年价值1亿美元。 4)谷歌的大厨也获得了价值2800万的股权。 有四点原因说明,谷歌的员工为何能够金融上收益如此好: 1)他们在公司处于很低估值的时候获得股票期权。 2)从A轮融资到现在,谷歌的估值涨了4000倍。 3)公司员工以人为的超低协议价格获得购买期权(大概只相当于每股股价的1/10还要低),因为当时IRS(美国国税局)的409(a)条款还不存在呢。 [...]
Windows/Dos下的“which”命令
文章来源: http://bbs.uestc.edu.cn/cgi-bin/bbstcon?board=Win9X_DOS&file=M.1002127007.A 在Linux下,有一个命令叫做which,它可以在Path中寻找某个命令所在的目录并显示出来。 Linux下: [adam@isbase adam]$ which ls /bin/ls [adam@isbase adam]$ which rm /bin/rm 在NT的Resource Kit中有一个where.exe,他也有相同的功效,不过一套Resource Kit要300美元,在这里我们可以作一个批处理文件来实现这个功能。 使用记事本编辑一个which.bat,并将其存放在windows\system32目录或者其他Path变量中的目录里,该批处理文件的内容如下: @echo off Rem 检查命令行参数 if {%1}=={} goto :Usage for %%i in ({ {/ {-) do if {%1}==%%i?} goto :Usage %%i echo. :Rem 在当前目录检查看是否存在该文件 for %%i in (%1) do if exist %%~nx%i ( echo %%~Fi goto :EOF ) :Rem [...]
解决Switchhosts插件报C:\Windows\system32\drivers\ect\hosts is not writable错误
使用Firefox插件Switchhosts进行hosts切换的时候,某些情况下会报一下错误:C:\Windows\system32\drivers\ect\hosts is not writable 解决方法就是备份原来的hosts文件,然后新建一个空白的hosts文件,然后注意查看一下该文件的属性是否包含只读,应该非只读权限。 这样就可以用Switchhosts进行切换了。
一个被修改可以支持高版本Firefox的Switchhosts插件
原文:http://phpd.cn/archives/476 修改了一下firefox插件switchhosts,让其支持新版firefox switchhosts是firefox下一个非常好用的hosts切换工具,但是插件的作者更新缓慢,或者说是firefox更新太快了,所以switchhosts最新版的1.1只支持firefox3 和 firefox4 可是现在firefox都6.0了,所以只好下载了一个switchhosts,修改了里面的配置,支持最高的版本数,直接从4改成了14 可以在一定时期内不需要担心switchhosts不兼容新版firefox的问题了 switchhosts下载 通过 firefox直接下载安装,或下载后,把文件拖到firefox中,会自动提示安装 下载地址 switchhosts-1.1.0-fx-windows.xpi
一个学习iphone开发的网站
http://www.raywenderlich.com/tutorials
转一篇:GIT和SVN之间的五个基本区别
原文:http://www.aqee.net/5-fundamental-differences-between-git-svn/ GIT和SVN之间的五个基本区别 本文是从 5 Fundamental differences between GIT & SVN 这篇文章翻译而来。 如果你在读这篇文章,说明你跟大多数开发者一样对GIT感兴趣,如果你还没有机会来试一试GIT,我想现在你就要了解它了。 GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。所以,这篇文章的主要目的就是通过介绍GIT能做什么、它和SVN在深层次上究竟有什么不同来帮助你认识它。 那好,这就开始吧… GIT是分布式的,SVN不是: 这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。如果你能理解这个概念,那么你就已经上手一半了。需要做一点声明,GIT并不是目前第一个或唯一的分布式版本控制系统。还有一些系统,例如Bitkeeper, Mercurial等,也是运行在分布式模式上的。但GIT在这方面做的更好,而且有更多强大的功能特征。 GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库。可以这样说,如果你被困在一个不能连接网络的地方时,就像在飞机上,地下室,电梯里等,你仍然能够提交文件,查看历史版本记录,创建项目分支,等。对一些人来说,这好像没多大用处,但当你突然遇到没有网络的环境时,这个将解决你的大麻烦。 同样,这种分布式的操作模式对于开源软件社区的开发来说也是个巨大的恩赐,你不必再像以前那样做出补丁包,通过email方式发送出去,你只需要创建一个分支,向项目团队发送一个推请求。这能让你的代码保持最新,而且不会在传输过程中丢失。GitHub.com就是一个这样的优秀案例。 有些谣言传出来说subversion将来的版本也会基于分布式模式。但至少目前还看不出来。 GIT把内容按元数据方式存储,而SVN是按文件: 所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。 GIT分支和SVN的分支不同: 分支在SVN中一点不特别,就是版本库中的另外的一个目录。如果你想知道是否合并了一个分支,你需要手工运行像这样的命令svn propget svn:mergeinfo,来确认代码是否被合并。感谢Ben同学指出这个特征。所以,经常会发生有些分支被遗漏的情况。 然而,处理GIT的分支却是相当的简单和有趣。你可以从同一个工作目录下快速的在几个分支间切换。你很容易发现未被合并的分支,你能简单而快捷的合并这些文件。 GIT没有一个全局的版本号,而SVN有: 目前为止这是跟SVN相比GIT缺少的最大的一个特征。你也知道,SVN的版本号实际是任何一个相应时间的源代码快照。我认为它是从CVS进化到SVN的最大的一个突破。因为GIT和SVN从概念上就不同,我不知道GIT里是什么特征与之对应。如果你有任何的线索,请在评论里奉献出来与大家共享。 更新:有些读者指出,我们可以使用GIT的SHA-1来唯一的标识一个代码快照。这个并不能完全的代替SVN里容易阅读的数字版本号。但,用途应该是相同的。 GIT的内容完整性要优于SVN: GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。这里有一个很好的关于GIT内容完整性的讨论 – http://stackoverflow.com/questions/964331/git-file-integrity GIT和SVN之间只有这五处不同吗?当然不是。我想这5个只是“最基本的”和“最吸引人”的,我只想到这5点。如果你发现有比这5点更有趣的,请共享出来,欢迎。