Selenium中字符串匹配
正则表达式增加了匹配的灵活性和代码的适用范围。
使用字符串匹配的地方
selenium IDE中很多命令参数写的是“pattern”,看到这个pattern就可以使用以下匹配方式来写参数:
- glob:全局定位符:*(任何字符)、?(单个字符)。默认
- regexp:JS 版本的正则表达式
- regexpi:case-insensitive,大小写敏感的
- exact:精准匹配
使用时,在参数前加相应前缀即可:regexp:^[0-9]a
Selenese(selenium IDE命令语言的名称) globbing patterns只支持*和[ ]. Selenese regexp提供与JS相同的特殊字符的序列。
使用举例:
PATTERN | MATCH |
---|---|
. | any single character |
[ ] | character class: any single character that appears inside the brackets |
* | quantifier: 0 or more of the preceding character (or group) |
+ | quantifier: 1 or more of the preceding character (or group) |
? | quantifier: 0 or 1 of the preceding character (or group) |
{1,5} | quantifier: 1 through 5 of the preceding character (or group) |
| | alternation: the character/group on the left or the character/group on the right |
( ) | grouping: often used with alternation and/or quantifier |
2. 其中regexp完全使用JS的正则表达式。正则表达式每个语言有不同的实现版本,具体书写的时候需要查看相应语言的官方说明。
JS正则表达式的参考:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp
DOM定位
Selenium中DOM定位的方式采用的是JS的DOM操作方式:
- dom=document.div[‘XXXX’].button[0] 以document.开头
- document.div[0].button[2]
- dom=function foo{ return document.getElementById(“XXXXname”);}; foo();
这种方式的优缺点(相对于其他定位方式xpath,css,id,name,link等):
- 优点:JS允许动态定位,使用灵活
- 缺点:依赖于页面结构
使用示例:英文版w3。
JS HTML DOM
在HTML DOM的帮助下,JS可以获取、操作HTML文件中所有的元素
当一个页面下载时,浏览器就会生成这个页面的DOM。
有了对象模型,JS可以做到的功能有:
- JS可以改变所有HTML元素
- JS可以改变所有属性
- JS可以改变CSS styles
- JS可以移除已存在的HTML元素和属性
- JS可以增加新的HTML元素和属性
- JS可以响应所有存在的HTML事件
点击链接查看完整参考中文网版w3
Flow Control
Selenese本身是不提供条件语句、循环迭代的功能。
在功能性测试时,动态content,可能会涉及到多个页面,这时候可能会涉及到流控制。
当需要使用Flow Control时,有下列三个选项:
1. 使用 Selenium-RC和Client Li