web自动化用例中应注意的问题
1,测试对象的定位
元素定位器(Element
Locators)
我们支持如下写法用于定位元素:
这里的name 可以作为可选项跟在一个或多个元素过滤器的后面,通过空格进行分隔。如果没有指定过滤类型,则假定为value。
〇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: 选择所包含的文字匹配指定式样的链接(锚)。
·css=cssSelectorSyntax: 通过css 选择器选择元素。请查询CSS2 选择器,CSS3
选择器以获得更多信息。在下载下来的selenium core package 中的selenium test suite
里的TestCssLocators test ,你同样可以查看到使用例子。
当前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()。
测试对象的扫描
3, $this->waitForPageToLoad("30000")有的时候会因为网页刷新慢而失效,可以改成Sleep语句,这样就可以防止因页面问题而出错了。
4,Assert语句的选择,有的时候很多Assert可以实现想要达到的效果,所以选择的时候要挑选合适的。如要严格匹配的话,就用AssertEqual(),如果不需要的话,就用assertContains(),以增加测试用例的健壮性。
Selenium 函数和Assert语句的选择