Selenium学习笔记

selenium ide

1.Selenium2 ide环境搭建

1.1准备一个较旧版本的Firefox浏览器,要和所用ide兼容

1.2在Firefox浏览器中,菜单“工具”—“附加组件”中,或者在线安装:在搜索栏中输入Selenium,然后搜索到Selenium进行安装;或者本地安装(前提是下载到该版本Firefox兼容的selenium_ide插件,后缀.xpi):点击齿轮工具,选择“从文件安装附加组件”,选择该xpi文件,完成安装。安装后提示重启Firefox。检查方式:能看到菜单“工具”下的“selenium ide”,以及附加组件中的“扩展”中有5个关于selenium的插件

1.3关闭Firefox自动升级功能:在断网环境中操作:打开Firefox浏览器,在菜单“工具”—“选项”中,选择“高级”、“更新”,选择不检查更新。确定后重启Firefox。

1.4关闭chrome浏览器的自动升级功能:在chrome浏览器中输入网址:chrome://plugins/,选择google update点击停用;在服务中对所有的google更新服务停止并改为手动。

2.ide基本语法

包括3个部分:Command命令、Target目标、Value值

Command命令:表示执行某操作,如Click

Target目标:通常表示定位到某Web元素,即在哪个Web元素上执行该操作

Value值:通常表示执行操作时使用的参数。

三者之间是函数和参数的关系:Command(Target,Value)函数,Command是函数名,Target是该函数的第一个参数,Value是该函数的第二个参数。

Selenium中的所有函数,有的没有参数,如close();有的只有1个参数,则该参数一定写在Target下,如open(url),url表示url地址写在Target下;有的有2个参数,则第一个参数写在Target下,第二个参数写在Value下,如verifyValue(locator,value)。

语法规则:

1.严格区分大小写;

2.命令小写打头,如果命令由多个单词组成,则从第二个单词开始首字母大写,如clickAndWait

3.不是所有的命令都能在ide中执行,也不是所有的命令能被录制到

3.常见函数

open(url),表示在打开的页面中访问网址

click(locator),表示在locator定位到的元素上点击

type(locator, value),表示在locator定位到的元素上进行输入,输入文字value

verifyValue(locator, value),表示在locator定位到的元素上进行检查,检查value属性值是否正确

close(),表示关闭一个页面,如果该页面是浏览器最后一个页面,则连浏览器一同关闭

4.Locator元素定位

基本语法:定位器=定位字符串

定位到1个或多个web元素(如果多个,则选择第一个)为定位成功,如果定位不到,则脚本运行时报错,可用Find进行检查。

包括:identifier=id或name属性值。Identifier=可省略(2.29版本中identifier=定位到多个时报错)

1.id= id属性值。Id=可省略

2.name= name属性值。name=可省略

3.css=样式表定位字符串

4.xpath=xml节点路径。当路径以//打头时,xpath=可省略

5.dom=javascript元素定位。dom=可省略

6.class=class属性值

7.link=超链接文字

5.样式表定位字符串

样式表,CSS,是web中的用于定位web元素展示样式的工具。

Css基本语法:样式表定位器{样式},表示样式表定位器所定位的web元素按照该样式展示。。样式语法:样式属性名:属性值。多个样式之间:分号连接。

在Selenium中直接使用样式表定位器作为css=后的定位字符串

标签名。Html:

;CSS:div

.class属性值。Html:;css=.a1,或:css=input.a1。特例:某些元素的class属性值为多个,如:; css=input.a1.a2

#id属性值。Html:;css=#id1,或css=input#id1,css=input#id1.a1

[属性名=属性值]。Html:

name=”n1”>;css=[name=n1],或:css=input[name=n1]。

例:如图button的class属性值有多个,可写成

css=button.btn.btn-lg.btn-primary.btn-block.ng-scope

Selenium学习笔记_第1张图片

例:1+2=3,验证3

Selenium学习笔记_第2张图片

图中id=btn1有以下几种写法

//li[11](Xpath)

css=#btn1(#id属性值均可写成css=#id1的形式)

btn1(id=可省略)

图中verifyValue的Target有以下几种写法

css=input.screen(css)

css=.screen

css=[name=numScreen]

css=[name=numScreen].screen

css=input[name=numScreen].screen

css=input[name=numScreen]

class=screen

有时针对单个元素直接定位较困难,所以CSS支持多个元素组合的定位:

父元素下的某子元素:父元素子元素,或:父元素>子元素。并不要求父子元素之间必须紧密相连

Firefox和chrome浏览器的查看元素中,显示了所有元素之间的关系。

如图:id=plus可写成css=div#calcu-btn>ul>li#plus.tool

Selenium学习笔记_第3张图片
注意:随着鼠标和键盘的操作,样式表定位器可能会发生改变。

6.xpath,xml节点路径

节点路径:

/表示根节点,表示文件

/a,表示根下的a节点,/a/b/c表示根下的a节点下的b节点下的c节点,如果有多个,默认选择第一个

..,表示上级路径

.,表示当前路径

//c,表示根下的所有路径下的c节点

//c[@name=”c1”],表示根下的所有路径下的c节点中的name属性值为c1的c节点

强调:属性值必须加引号,单或双引号均可。

//c[2],表示根下的所有路径下的c节点中的第2个。即序号从1开始

Selenium学习笔记_第4张图片
Selenium学习笔记_第5张图片
//li[11]表示根下的所有路径下的li节点中的第11个,即id=btn1

7.Javascript元素定位

Selenium中支持的javascript元素定位语法:

document.表单.元素

表单:form,语法:form的Name属性值;或:forms[“name属性值”];或:forms[表单序号],序号从0开始

元素:element,语法:element的name属性值;或:elements[“name属性值”];或:elements[元素序号],序号从0开始

该定位方式使用有限制:

1.页面中必须有表单form

2.Form中部分元素支持。支持的:input,

button, image, select, textarea,checkbox,radio;不支持的如:table, tbody,

tr, td, ul, li, ol, div, span, p, br, h,a等

8.命令AndWait

几乎所有的命令都有个类似作用的命令AndWait

命令:执行当前操作后,立刻执行下一个操作,下一个操作的元素定位,也是定位在当前页面中;

命令AndWait:执行当前操作后,等待页面被重新加载一次。等页面加载完成后,才开始执行下一个操作。下一个操作的元素定位,定位在新的页面中。

但命令AndWait只等待页面被重新加载一次,如果发生页面多次加载,则仅仅用命令AndWait也无法解决。需要通过waitFor系列命令来解决,最常用waitForElementPresent,该命令无论页面被加载多少次都会继续等待下去,直到所定位的元素被找到或超时。

除了命令AndWait,waitFor系列命令外,还有个命令也起到等待的作用:pause(毫秒)

9.针对下拉列表

adddSelection(SelectLocator,OptionLocator),表示增加一个选择,用于多选列表

removeSelection(SelectLocator,OptionLocator),表示取消一个选择,用于多选列表

select(SelectLocator, OptionLocator),表示选择一个,用于单选列表

OptionLocator选项定位器,不支持普通web元素的定位器,语法:

label=选项文字匹配条件

value=选项的value属性值

id=选项的id属性值

index=选项的序号,从0开始

Selenium学习笔记_第6张图片
图中:index=3表示id=a4

10.匹配条件(value)

匹配条件,通常出现在检查的函数中,以及某些针对文字的定位器中,语法:glob:字符串。表示支持通配符,*表示任意多个任意字符,?表示1个任意字符。glob:可省略

regexp:正则表达式。表示字符串是正则表达式

exact:字符串,表示字符串精确匹配

11.正则表达式

一种特殊的字符串,作用是进行模糊匹配。Name Like ‘王%’

普通字符:普通字母,如’a’,只能精确匹配’a’;ascii编码中没有固定字符表示的一些符号,可以通过普通字母前加\来表示:’\n’表示换行符,’\t’表示制表符,’\r’表示回车符;特殊字符前加\转义以表示该字符本身,而不再表示该特殊字符的含义:’\.’

一个特殊字符:’.’表示一个任意字符;’[abc]’表示字符abc中的任一个,’[0-9a-zA-Z]’表示大小写英文字母和数字中的任一个;’[^abc]’表示不是abc中的任一个

频率字符:本身没有含义,表示前一字符的频率:’*’表示前一字符可以0、1、n多个,’+’表示前一字符可以有1、n多个,’?’表示前一字符0、1个;’{2,4}’表示前一字符2到4个。

“ab.*”表示可匹配”ab”,”aba”,”ab123”,”abwerryfhtgsxcvnh”

“1[34578][0-9]{9}”

12.针对弹出框

Selenium ide将提示框分为3类:alert提示框、confirm确认框、prompt对话框

通过检查文字并关闭弹出框的方式来操作,命令assertAlert、assertConfirm、assertPrompt命令,参数是检查的匹配条件

关闭弹出框的方式:默认都是确定按钮,但如果在导致该弹出框出现的命令前,加chooseCancelOnNextConfirmation()命令,则表示点击取消按钮;加answerOnNextPrompt(字符串),则表示先输入该字符串再确定。无论输入什么最后点击取消,则表示输入”null”并确定。

13.verify系列命令和assert系列命令的区别

都是做检查,verify命令检查无论是否正确,都会继续执行;assert命令检查通过,继续执行,检查不通过,脚本中断退出

14.针对双击、右键、鼠标移动等特殊的键盘鼠标操作

无法录制,但手写可执行,doubleClick双击,contextMenu右键弹出菜单,mouse系列命令,key系列命令

15.针对frame

selectFrame(frameLocator),表示在父子frame之间切换

frameLocator框架定位器,除了支持普通元素的定位方式外,还支持以下定位方式:

relative=parent,表示定位到当前frame的上级

relative=top,表示定位到本页面最顶层

index=0,表示定位到本框架或页面下的第几个子frame,从0开始,只在平级的子frame之间算序号,和上级frame或更下级frame无关

selectWindow(frameLocator),表示在兄弟frame之间切换

frameLocator兄弟frame定位器,不支持普通元素定位器,语法:

title=frame的title属性值

name=frame页面的窗口name属性值,该属性值写父页面的

name=”name属性值”>标签中

16.针对多页面

Selenium ide只能实现从窗口到弹出式窗口的切换,无法实现从窗口a到窗口b的切换,虽然在ide2.9中已经可以录制到selectWindow(windowName),但该命令无法执行

切换到弹出式窗口的命令:

waitForPopUp(windowName)

selectWindow(windowName)

windowName定位器:

是该window窗口的name属性值:导致该弹出式窗口出现的javascript函数:window.open()函数,该函数有3个参数,分别表示弹出式窗口的url,该弹出式窗口的name属性值,该窗口的展示样式

17.执行javascript

runScript(javascript语句)

你可能感兴趣的:(Selenium学习笔记)