web自动化用例中应注意的问题

1,测试对象的定位
      在WEB级测试的过程中,最麻烦的是测试对象的定位。Selenium有很多定位的方法,请自行学习。

元素定位器(Element Locators)
    元素定位器(Element Locators)告诉Selenium 是向HTML 中的哪一个元素发送命令。一个定位器的格式如下:
     locatorType = argument
我们支持如下写法用于定位元素:
   ·identifier=id :根据指定的@id 属性选择元素。如果没有匹配的值,则选择第一个@name 属性为id 的元素。(参照后面)
   ·id=id :根据指定的@id 属性选择元素。
   ·name=name :选择第一个根据指定的@name 所查找到的元素。
    〇username
    〇name=username
这里的name 可以作为可选项跟在一个或多个元素过滤器的后面,通过空格进行分隔。如果没有指定过滤类型,则假定为value。
    〇name=flavour value=chocolate


  ·dom=javascriptExpression: 通过检测指定字符串查找元素。这使得你可以通过JavaScript 贯穿HTML 文档对象。注意在这个字符串中返回值不是必须的;仅仅只需要确保这条语句是你块中的最后一条。
〇dom=document.forms[´myForm´].myDropdown
〇dom=document.images[56]
〇dom=function foo() { return document.links[1];}; foo();


·xpath=xpathExpression: 通过XPath 表达式定位元素。
〇xpath=//img[@alt=´The image alt text´]
〇xpath=//table[@id=´table1´]//tr[4]/td[2]
〇xpath=//a[contains(@href, ´#id1´)]
〇xpath=//a[contains(@href, ´#id1´)]/@class
〇xpath=(//table[@class=´stylee´])//th[text()=´theHeaderText´]/../td
〇xpath=//input[@name=´name2´ and @value=´yes´]
〇xpath=//*[text()=″right″]


·link=textPattern: 选择所包含的文字匹配指定式样的链接(锚)。
   〇link=The link text


·css=cssSelectorSyntax: 通过css 选择器选择元素。请查询CSS2 选择器,CSS3 选择器以获得更多信息。在下载下来的selenium core package 中的selenium test suite 里的TestCssLocators test ,你同样可以查看到使用例子。
   〇css=a[href=″#id3″]
   〇css=span#firstChid + span
当前css 选择过滤器支持所有的css1,css2,css3,除了css3 中一些虚拟类(:nth-of-type,:nth-last-of-type,:first-of-type,:last-of-type,:only-of
-type,:visited,:hover,:active,:focus,:indeterminate)以及虚拟元素(::first-line,::first-letter,::selection,::before,::after)。


如果没有一个显式的前缀,Selenium 使用以下默认写法:
·dom,用于开头为″document.″的定位器
·xpath,用于开头为″//″的定位器
·identifier,其他元素过滤器(Element Filters)


元素过滤器可以同选择器一起使用,从一堆候选元素中进行筛选。它们当前仅使用于’name’元素选择器。
过滤器看起来更像是选择器,也就是:
filterType=argument
所支持的元素过滤器为:
value=valuePattern
匹配元素时基于它们的值进行匹配。这在对一堆相似命名的关联按钮的筛选中显得尤其有用。
index=index
选择单个元素基于其在列表中的位置(从0 开始)。
字符串匹配式样
有各种各样的式样语法可用于匹配字符串值:
·glob:pattern: 用″glob″去匹配一个字符串。″Glob″是一种用于命令行shells
的代表性的有限正则表达式语法。在一个glob 式样中, ″*″代表任意序列字符集,
而″?″则代表任意单个字符。Glob 式样匹配整个字符串。
·regexp:regexp: 使用正则表达式匹配字符串。可使用所有的JavaScript 正则
表达式。

有个注意事项:如果要定位新打开窗口中的元素,必须先选定新窗口:selectWindow()。
测试对象的扫描


    2,在测试用例执行的过程中,有的时候由于页面刷新的原因,可能出现找不到的情况,这个时候加些儿必要的Sleep()语句。

3, $this->waitForPageToLoad("30000")有的时候会因为网页刷新慢而失效,可以改成Sleep语句,这样就可以防止因页面问题而出错了。

 

4,Assert语句的选择,有的时候很多Assert可以实现想要达到的效果,所以选择的时候要挑选合适的。如要严格匹配的话,就用AssertEqual(),如果不需要的话,就用assertContains(),以增加测试用例的健壮性。


Selenium 函数和Assert语句的选择


     (1) Selenium API函数参考手册
     (2)Selenium入门:http://blog.csdn.net/chinabluexfw/article/details/7331359
     (3)Assert语句介绍
          思想之地:
http://be-evil.org/tag/phpunit
          phpunit -assert系列函数:http://blog.sina.com.cn/s/blog_5d2184eb0100n9z1.html

posted @ 2012-10-11 16:23  潜龙9527  阅读(111)  评论(0编辑  收藏  举报