Selenium 的基本了解以及Selenium IDE插件的知识点

Selenium 是用于网页的测试

selenium Grid 是使用于分布式测试

使用到html、xml以及Xpath进行元素定位。

Selenium可以用来录制脚本。
关键字测试驱动的方式

command 表示要执行的操作是什么
target 表示操作的界面元素是哪个
value 表示操作时使用时多少

/*
1、/ 表示填写的Base URL
2、id = kw kw表示搜索文本框
3、id = su (点击“百度一下”按钮,然后执行clickAndWait,即为单击执行之后,等待页面加载完毕。)
*/

里面有两个执行测试的按钮:
play entire test suit 表示执行整个测试套件,也就会左侧的所有的测试用例都会执行
play current test case 执行当前选中的测试用例。

command target value
type id=lst-ib selenium
表示类型 搜索元素的id是“lst-ib” ,然而搜索的关键字是selenium。

click name=btnK
表示的是通过名字来进行查找。

ps:这些元素的特性都是通过制定然后右键,通过firebug查看里面的内容。

command : 要执行的操作是什么,必须的参数,并且这个的选项很多。
selenium的命令通常称为“selense”,它是一套执行测试的的命令集。

selense
1)基于HTML 标记,用于测试UI元素是否存在,验证指定内容是否正确,检查链接是否可用,可以输入字段,选择列表的选项,提交表单病操作表格中的数据,
2)用于辅助测试,eg:验证窗口的大小,鼠标的位置、警告信息,弹出窗口、Ajax功能时间处理以及其他各种web应用程序功能。

3种分类类型:
Action(操作):用于操作应用程序的状态
Accessor(存储):检查应用程序的状态,并且将结果存储到变量中。eg:“storeTitle” 用于自动生成Assertion。
Assertion(断言):类似Accessor命令,验证程序的状态,并且确定这些状态符合预期的结果。eg:“确定该页面的标题是****”“验证该复选框为勾选状态”

Action的命令:

1、浏览器的操作
1)、open(url)
(1)url = base url + target
eg:if base url = http://www.baidu.com target=index.html
url = http://www.baidu.com.index.html
(2)if target是以http://开头的,将会忽略base url

2)、goback() 浏览器的后退功能

3)、refresh() 浏览器的刷新功能

4)、windowFocus() 激活当前选择中的浏览器窗口

5)、windowMaximize() 将当前选中的窗口最大化

6)、close() 关闭当前选中的浏览器的窗口

2、界面元素的基本操作
1)、type(locator,value) 表示input类型的输入,也就是文字的输入,同时也可以是选项,选中的值将是选项中的选项值,而不是文本。
target:元素的定位表达式
value:要输入的值

2)、typekeys(locator,value) 这个命令已经过时,需要时使用sendKeys来替换;
模拟键盘一个一个的字符的输入过程.
参数同上。

3)、click(locator)点击复选框、单选框以及链接。
(单击需要加载页面,一般在后面使用waitForPageToLoad或者使用clickAndWait)

4)clickAt(locator,coordString) 余click相似,但是需要填写相应的坐标
coordString(value):eg:(10,20)指定元素上进行单击的坐标(x,y)

5)doubleClick(locator)
双击,一般在后面使用waitForPageToLoad或者使用doubleClickAndWait

6)doubleClickAt(locator,coordString)
和上面的差不多

7)select(selectLocator,optionLocator)
用于在下拉框中选择指定的选项
(&&选项的定位方式和下拉框的定位方式有点不同)
label= 文本值,基于选项的文本进行匹配(默认方式),eg:label=three
value= 真实值,基于选项的真实值进行匹配,eg:value=3
id=id 基于选项的id进行匹配,eg:id=option2
index=index,基于选项的索引进行匹配,eg:index=2
(索引是从0开始的)
target:下拉列表框的定位表达式
value:下拉列表框的选项表达式

check(locator) 勾选复选框或者单选框

uncheck(locator) 去选勾选

focus(locator) 将焦点移植到指定的元素上
eg:若是有一个文本框,可以先将焦点移植到文本框,在用键盘输入值。

3、
键盘鼠标的模拟动作
altkeyDown() 模拟按下alt键不放,直到调用altKeyUp命令或者加载新的页面
altKeyUp() 松开alt键

controlKeyDown() 模拟按下ctrl键不放,直到调用altKeyUp命令或者加载新的页面
controlKeyUp() 松开ctrl键

shiftKeyDown() 模拟按下shift键不放,直到调用altKeyUp命令或者加载新的页面
shiftKeyUp() 松开shift键

……………………很多这方面的操作
即为模拟键盘和鼠标的操作,键盘操作豪阔了键盘按下的组合件产生的效果。

4、设置类操作
1)setTimeout(timeout)
执行一个操作的最大等待时间,仅仅使用open、waitfor开头以及带有AndWait后缀的命令。
2)setSpeed(value) 设置各个步骤执行的时间间隔

5、调试控制和调试类工作
1)、pause(waitTime) 使测试在指定的时间内暂停执行(类似设置等待时间,什么都不做)
2)、break()暂停当前正在执行的操作,知道用户手动点击继续的按钮。
3)、captureEntirePageScreenshot(filename,kwargs)将当前的窗口进行截图病保存为PNG文件
target:保存图片存放的目录 eg:D:\123.png
4)、highlight(locator) 暂时将制定元素的背景改为黄色,并且在后面自动取消效果。一般适用于调试。
echo(message) 指定信息打印出来,一般用于调试。

Accessor
检查应用程序的状态,将结果存放在变能量中。
eg:storeTitle,Accessor自动生成Assertion命令,读取值的方式为:$(变量名称)
1)store(expresson,variableName) 指定值存在变量中
target:要存储的值
value:变量名称,target所写的值就存放在这里。
2)storeTitle(variableName) 用于存放当前网页的标题
target:变量名称,该变量就是指存放的地方。
3)storeLocation(varibleName) 存储当前网页的url
4)storeValue(locator,value) 就是在input元素中的内容,将target中的值存放在value中,
5)storeEdiable(locator,value) 存储input中的元素的可编辑状态
6)storeText(locator,variableName) 用于存储某个元素的文本值(eg:链接,纯文本)
7)storeChecked(locator,value) 存储单选框或者复选框的勾选情况,勾选true,不勾选false
8)storeSelectedIndex(selectLocator,variableName) 获选所选项在列表中的索引(从0开始)
9)storeSelectedLabel(selectLocator,variableName)获取指定列中所选项的文本值
10)storeSelectedValue(selectLocator,variableName)获取指定列中所选项的真实值(即为:value的值)
11)storeSelectedOptions(selectLocator,variableName)获取指定列中所选项的文本,以都好隔开
12)storeTableCell(tableCellAddress,variableName)
获取表格(table元素)中某个单元格(td元素的值)
target:格式:表格的定位表达式.行号.列号
(行列号都是从0开始的)
value:变量名称
13)storeAttribute(attributeLocator,variableName)获取指定属性的值
14)storeTextPresent(pattern,variableName)
15)storeElementPresent(locator,variableName)验证指定的压面是否存在于页面中
storeVisible(locator,variableName)
在页面上看不到,但是可以通过storeElementPresent命令进行验证,仍然返回true,这是因为visibility属性为hidden,display属性为true。
storeSpeed(variableName)获取执行的额速度
(获取每个测试步骤之间的执行间隔时间(默认为0,单位为毫秒))

Assertion(断言)
与accessor类似
主要用于验证某个命令是否为真
3种 模式的使用:assert、verify、waitFor
可以使用assertText、verifyText、waitForText
区别:
assert失败,将会终端
verify失败,继续执行后面
waitFor用于执行等待,(非常适合使用在Ajax上面)

几乎每一个accessor都是对应着一个Assertion。
1、验证网页的标题是否等于或者不等于预期值
assertTitle(pattern) /assertNoTitile(pattern) /verifyTitle(pattern) /verifyNoTitle(pattern)/waitForTitle(pattern)/waitForNotTitle(pattern)

2、验证网页的url是否等于或者不等于预期值
assertLocation(pattern) ……

3、验证input元素的值是否等于或不等于预期值
assertValue(locator,pattern) ……

4、验证input元素的可编辑状态是否为预期的状态
assertEditable(locator) ……

5、验证某个元素的文本值是否等于预期的值
assertValue(locator,pattern) ……

6、验证复选框或单选框的勾选情况是否符合预期
assertChecked(locator) ……

7、验证所选的列表中的索引是否符合预期值

8、验证指定的列表中所选项的文本值是否符合预期值

9、验证指定列表中所选项的真实值

10、验证指定列表中所有选项的文本是否符合预期值

11、验证表格(table元素)中的某个单元格(td元素)

12、验证指定属性的值是否符合预期

13、验证指定的页面是否在页面中出现

14、验证指定元素是否存在于页面上

15、验证页面中是否显示指定元素

总结:上面主要讲了command中的3种类型的action,Accessor、assertion 这些命令的常用,使用的时候可以查阅一下就好。

第二部分
Target 主要用于识别web中的元素
1、identity定位,默认的定位方式
(默认通过id、name属性来进行查找)

2、id定位
知道某个元素的id,

3、name定位
定位方式识别首个name属性等于定位值的页面元素。
若是多个name的属性值相同,那么可以使用过滤进一步细化,默认的滤过类型是value。

4、xpath定位
(找不到合适的id、name的属性进行定位的时候,我们可以使用xpath来进行定位)因为xpath除了可以使用id,name来定位之后,还可以使用其他的元素进行定位。
(可以是绝对路径,但是不好用)
eg:xpath = /html/body/form[1]
或者
xpath = //form[@id='loginForm']
xpath = //form[input^@name='usename']

5、(link关键字的内容进行定位)链接文字定位
Continue
eg:link = Continue

6、DOM 定位
通过js来定位
(由于只有dom定位才会使用document开头,所以没有必要写“dom=”)
eg:
dom = document.getElementById('loginform');

7、css定位
使用选择器来为文档中的元素绑定样式属性

ps: 返回第三行元素:css=form#loginForm 返回第四行元素:css=input[name="username"] ………………

8、隐式定位
target表达式中可以省略“定位类型=”的情况
1)表达式没有指定默认为identity
2)使用xpath来定位,则是使用//开头
3)dom定位则是使用document开头

第三部分 value
value填什么值和command有密切的关系
value值的类型:纯文本值、带有变量的字符串、js的字符串

1)带有变量的字符串,即为含有字符串在value中(字符串+变量的组合)
2)带js的字符串, 含有js语句的变量。(js+字符变量)

4、日志和应用
Selenium IDE 包括了
1)Log(日志)(常用):输出测试的相应的信息
2)Reference(引用)(常用):显示我们鼠标点击哪一行显示的具体的操作
3)UI-Element(UI元素)、
4)Rollup。

5、拷贝测试代码
里面右键即可copy进行拷贝和在记事本中粘贴
然而,默认是html的代码
然而可以转化代码,选择(菜单上)options——>ClipBoardFormat,选择对应的语言和Selenium版本即可。

将命令导出为代码
(导出用例或者导出用例组)
“文件”——> Export Test Case As
“文件”——> Export Test Suite As
可以选择对应的语言和版本。

上一篇:Python 封装selenium元素定位FindElement类


下一篇:matplotlib各种刻度设置