摘要: 在进行UI自动化测试时,我们会经常会用到FindWindow,FindWindowEx,SendMeesage等这些Windows Function。最近我在windows 7上进行UI自动化测试时发现FindWindow这个函数有时无法获取到打开窗体的句柄,在网上搜了一下原因:应该就是因为Session 0 隔离的问题。特此做下相关文章的记录:1、Session 0隔离:http://technet.microsoft.com/zh-cn/ee791007.aspx2、穿透Session 0 隔离http://www.cnblogs.com/gnielee/archive/2010/04/0 阅读全文
posted @ 2011-08-10 00:25 heqichang 阅读(809) 评论(0) 推荐(0) 编辑
摘要: LINQ的分组功能是通过group by子句实现的。group by的结果是存在一个IGrouping对象中的,含有一个Key/Element对。Key代表的是进行分组的凭据,而Element则是我们需要的数据。static void Main(string[] args){ var nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var result = from n in nums group n by n % 2; foreach (var item in result) { Console.WriteLine(item.Key == 0 阅读全文
posted @ 2011-08-07 12:15 heqichang 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 通过orderby关键字,LINQ可以实现升序和降序排序。LINQ还支持次要排序。LINQ默认的排序是升序排序,如果你想使用降序排序,就要使用descending关键字。static void Main(string[] args){ var dicts = new Dictionary<int, string>(); dicts.Add(9, "Jack"); dicts.Add(13, "Tom"); dicts.Add(5, "Tod"); dicts.Add(2, "Alics"); var d 阅读全文
posted @ 2011-08-03 20:53 heqichang 阅读(4075) 评论(0) 推荐(0) 编辑
摘要: 今天在设计网页的时候遇到一个CSS优先级的问题,特此记录一下自己的问题:<head> <title></title> <style type="text/css"> .testTable td { background-color:red; }.testTd{ background-color:blue; } </style> </head><body><table style="width: 100%" class="testTable"> 阅读全文
posted @ 2011-08-02 16:52 heqichang 阅读(396) 评论(0) 推荐(0) 编辑
摘要: 由于浮动的元素脱离了文档流,所以它们不会在网页文档中占据空间。如果一个DIV容器中想要包含这些浮动的元素的话,有两种办法。第一:在这个DIV容器中在某个地方使用clear;第二:让这个DIV容器也进行浮动。参考:http://www.w3school.com.cn/css/css_positioning_floating.asp 阅读全文
posted @ 2011-08-01 15:04 heqichang 阅读(2156) 评论(0) 推荐(0) 编辑
摘要: 筛选信息在Linq中可以通过两种方法筛选信息,where和OfType。Where子句大家应该都很熟,OfType是用于筛选能够转换为特定类型的值。static void Main(string[] args) { Object[] objects = new Object[] { 123, "hello", 67.5f, 7M, "six", 89, true }; var intArray = objects.OfType<int>(); foreach (var item in intArray) { Console.WriteLine 阅读全文
posted @ 2011-07-16 09:49 heqichang 阅读(905) 评论(0) 推荐(1) 编辑
摘要: 这几天在公司,因为业务上的需求,需要对以前写的用例都添加一些初始化操作,由于测试用例非常多,直接添加非常耗时耗力,所以我们使用了一个简单的消息拦截的方法,让以前代码不用进行大规模修改。消息拦截需要用到的类有ContextAttribute、ContextBoundObject以及两个接口IContributeObjectSink和IMessageSink。关于AOP以及以上使用到的类与接口,可以看下其他人的介绍:(本人mark)ContextAttribute与ContextBoundObject应用开发收藏:Attribute在.net编程中的应用AOP技术介绍using System;us 阅读全文
posted @ 2011-07-07 19:11 heqichang 阅读(1567) 评论(0) 推荐(0) 编辑
摘要: 这星期在工作上碰到一个关于颜色对比度的测试问题:即在网页上文字的前景色与该文字的背景色对比,应该达到WCAG(Web内容可访问性指南)中的要求。该文档对Web内容进行了一些规范要求,能让你的网站内容的可访问性达到最佳。其中就有一条(G18)关于颜色对比度的规范,应该按照它的公式至少达到4.5:1的要求,这样对于人的肉眼就比较容易区分开背景色与前景色。以下是我个人的C#实现: /// <summary> /// 将十六进制颜色值转换为RGB数组 /// </summary> /// <param name="hexadecimal">颜色十 阅读全文
posted @ 2011-07-02 14:15 heqichang 阅读(904) 评论(0) 推荐(0) 编辑
摘要: Lambda表达式的演化要了解Lambda表达式,我们首先应从委托说起。.NET中的委托实际上就是C语言中的函数指针,函数通过地址进行引用,只不过.NET中它更加好看了而已。delegate void FunctionPoint(string str); static void printHello(string name){ Console.WriteLine("Hello {0}", name);} static void Main(string[] args){ FunctionPoint fp = printHello; fp("heqichang&quo 阅读全文
posted @ 2011-06-28 14:15 heqichang 阅读(465) 评论(0) 推荐(0) 编辑
摘要: yield向编译器指示它所在的方法是迭代器块。yield并不是.NET中的关键字,所以我们可以将它用于变量名。不过yield return和yield break就是关键词组了。yield returnyield return 是迭代器(Iterator Pattern)模式的一种实现,能够将本身不是可迭代集合的对象做成可迭代集合。static void Main(string[] args){ foreach (var item in getNums()) { Console.WriteLine(item); }} static IEnumerable getNums(){ yield re 阅读全文
posted @ 2011-06-21 13:55 heqichang 阅读(814) 评论(0) 推荐(0) 编辑