Selenium学习笔记

Selenium IDE 命令分为三类: Action, Accessor,Assertion

Action命令用于操作程序的状态, Accessor命令用于检查应用程序的状态,并将结果存储在变量中,例如“storeTitle”。他们可用于自动生Assertion。 Assertion命令类似于Accessor命令,但是他会验证应用程序的状态,并确认这些状态符合预期的结果。


1. Action:

“...AndWait”命令等于原命令+waitForPageToLoad,在操作后,页面需要刷新的情况用这种命令。如果不需要善心,用这种命令会出错。


1.1 浏览器操作:      如果没有参数,target和value的值可以不填。 target是元素的定位表达式

(1)open:

- 当Target为空中,将打开Base URL的界面

- 当Target不为空时,将打开Base URL + Target的界面

- 当Target以http://开头时,将覆盖Base URL的值

(2)goBack

(3)refresh

- 没有参数的话,target和value可以不填

(4)windowFocus()

- 用于激活当前选中浏览器的窗口

(5)widowMaximize

(6)close()

1.2 界面元素的基本操作

(1)type(locator, value)

-       用于input类型的元素输入值,也可以是下拉框,复选框

(2)typeKeys(type类似于SWTBot中的setText,typeKeys类似于SWTBot中的typeText)

- 模拟键盘敲击事件,一个个输入值。这个相当于调用了keyDown,keyUp,keyPress.

- typeKeys和type命令不同,type命令会一次性强制录入制定的值(而不是键盘上拥有的字符,如汉字),而typeKeys相当于一个键一个键地按。在某些情况下,可能先使用type命令来设置字段的值,然后使用keyTypes来触发刚刚输入字符的键盘事件。(??)

3)click(locator)

(4)clickAt(locator, coordString(need coordString, is different with "click(locator)"))

- value: 指定元素上单击的坐标(与click(locator)命令类似,但是需要指定坐标)

(5)doubleClick(locator)

- 如果导致页面重载,用doubleClickAndWait

(6)doubleClickAt(locator,coordString)

(7)select(selectLocator,optionLocator)

- 该命令用于在下拉列表框中(与swtbot有很大的不同选择指定选项

- 选项的定位方式和下拉框的定位方式有所不同

label=文本值,基于选型的文本进行匹配(默认方式),例如label=three

value=真实值,基于选型的真实值进行匹配,例如value=3

id=id,基于选项的id进行匹配,例如id=option3

index=index,基于选项的索引进行匹配,例如index=2

(8)check(locator)

- 必要时可以使用click命令来勾选复选框,(与swtbot相同

(9)unCheck(locator)

(10)Focus(locator)

1.3   键盘鼠标模拟操作

-      键名+KeyDown(),键名+KeyUp(), 成对使用

- 所有的KeyDown/KeyUp命令,只有按顺序使用,就能形成组合键。例如Ctrl+Alt+C,先CtrlKeyDonw,AltKeyDown,KeyDown,这样就按下了快捷键,之后再一个个up

1.4 设置类操作

(1) setTimeOut(timeout): (功能类似于SWTBot

-      默认时间是30s

(2)setSpeed(value)

- 设置各个测试步骤类似于SWTBotPreference.Delay)之间执行的时间间隔

-      默认值为0s

1.5 测试控制/调试类操作:

(1)pause(time)

(2)break()

- 暂停当前正在执行的测试,直到用户手动单价继续按钮

(3)captureEntirePageScreenShot(filename,kwarges)

- 将当前窗口进行截图,并保存为png文件

(4)highligh(locator)

- 暂时将指定元素的背景色改为黄色,并在稍后取消该结果

(5) echo(message)

- 打印出log结果


2. Accessor

(1) store(value, variableName)

-         最基本的存储方式,就是将值value付给变量variableName

(2) storeTitle(variableName)

(3)storeLocation(variableName)

-         用于存储当年网页的URL

(4)storeValue(locator, variableName)

- 把位置是locator的值放到变量variableName里面

- 如果是复选框或是单选框,勾选会输出on,不勾选输出off

(5)storeEditable(locator,variableName)

- 输出true或是false

(6)storeText(locator,variableName)

-     存储某个元素的文本值(概念??)

(7)storeChecked(locator,variableName)

(8)storeSelectedIndex(selectLocator,variableName)

-      获取所选项在列表中的索引(概念??)(从0开始)

(9)storeSeletedLabel(selectLoactor,variableName)

(10)storeSeletedValue(selectLocator, variableName)

(11) storeSelectedOptions(selectLocator, variableName)

-      获取指定下拉列表中的所有文本

(12)storeTable(tableCellAdress, variableName)

- 获取表格中某个单元格的值

- Target的形式为: 表格的定位表达式.行号.列号,e.g foo.1.4

- table的定位符可能是XPath

(13) storeAttribution(attributionLocator,variableName)

- target: 是属性的定位表达式,而不是元素的定位表达式,格式为“元素定位表达式” + “@属性名称”, e.g.foo@bar

(14)storeTextPresent(pattern,variableName)

- 查看指定的文本是否存在

- target: 指定的文本

(15)storeElementPresent(locator, variableName)

- 查看指定的元素是否村子

-      taget: 指定元素的定位表达式

(16)storeVisible(locator,variableName)

- 类似于storeElementPresent,适用于使用storeElementPresent返回true,但是实际在页面上找不到。这是visibility属性是hidden或是display是none

(17)storeSpeed(variableName)


3. Assertion

Assertion命令都可以通过3种模式使用: assert,verify,waitFor。区别在于assert失败,case会中断。verify失败,case会继续执行,失败会记录下来。因此用单个assert来确认当年应用程序是否位于正确的页面,然后接下来使用一系列verify命令来做其他的测试。



TARGET && VALUE

大部分情况下,Target是一种定位表达式,其格式为“定位类型=定位值”,在大部分情况下,定位类型是可以省略的,根据使用情景的不同,定位类型也不相同。

1. identifier定位

identifier定位首先匹配首个id的值等于identifier值的页面元素,如果找不到id匹配的,就需要收个那么属性的值等于identifire值的页面元素。如果name属性和id属性都找不到的话,定位就会失败。例: identifier=loginForm

2. id定位

3.     name定位

-     name定位方式会首先搜索首个name值等于定位值的元素,如果有多个name值相同的元素,可以使用过滤器。

例:name=username; name=continue, value=Clear,name=continue,clear(省略“value”), name=continue,type=button。

注意: name定位和id定位适用于页面结构频繁发生变化的时候

4. XPath定位

- 可以通过id和name定位,也可以使用相对路径进行定位,使用绝对路径进行定位不推荐。

- XPath表达式中以“//”开头,那么target表达式中,就不用包含“XPath=”了

5.连接文字定位:

只需简单简单提供连接文本,格式为“link=”

6. DOM定位:不常用

7. CSS定位:(Cascading Style Sheets)

1. 格式为CSS=

2. CSS方式比XPath方式更快,更容易找到HTML中的复杂对象。

8. Value值可以是String类型,也可以是JavaScript


SELENIUM

1. Selenium 1的工作原理:

1. 1 Selenium组件

1.2 Selenium服务器

1.3 Selenium客户端库文件

2. 安装并使用Selenium && Selenium Server:下载地址: http://selenium.org/download/

3. Selenium1的API跟Selenium IDE里面一样:

3.1: getValue(location):       用于获得输入文本的值等

getText(location):获得某个元素的文本值

3.2 getSelectOptions(selectLocator): 获取指定列表中所有选项的文本,返回值为String【】

3.3 getTable(tableCellAddress):获取表格中某个单元格的值

3.4 getAttribute(attributeLocator):attributeLoactor是属性的定位表达式,而不是元素的定位表达式,表达式为元素的定位表达式@属性名称

3.5 getXpathCount(locator):获取符合XPath表达式的数量

3.5 WaitForPageToLoad(timeout):

- 等待页面加载完毕,浏览器状态栏为“完成”时,表示页面加载完毕, open命令,已带有WaitForPageToLoad工程,无需再等待

3.6 setTimeOut(timeout)

- 用于设置默认超时时间,主要与open()或WaitForXXX()结合使用

3.7 captureEntirePageScrrenshot(filename,kwargs):

- 将当前窗口截图并保存为pNG文件

- 截图功能只在浏览器*firefox,*chrome和*iexploreproxy使用

3.8 CaptureSecreenshot(fileName)

-      获取整个屏幕的内容,而3.7是只获取浏览器窗口中的内容。CaptureScreenShot,不限浏览器


4. JavaScript弹出对话框的处理:

Selenium 1对JavaScript对话框进行预处理,所有使用selenium测试不会弹出JavaScript对话框。这是因为在弹出前已经处理了。

4.1 Alert命令

- IsAlertPresent

- GetAlert

4.2 Confirmation命令

- IsConfirmationPresent

-ChooseOkOnNextConfirmation

- ChooseCancleOnNextConfirmation

4.3 Prompt命令

- IsPromptPresent

- GetPrompt

- AnswerOnNextPrompt(text)

输入text文本


5. 浏览器多窗口处理

5.1 GetAllWindowsIds,GetAllWindowNames,GetAllWindowTitles返回字符串数组

窗口的ID几乎没有意义,实际测试中使用比较少。name表示这些窗口对于selenium测试的名称,由selenium进行命名,而不是web应用程序。title则是各个窗口的标题。在测试中通常使用name作为标识,因为他不会发生变化,而title经常会发生变化。

5.2 WaitForPopUp(windowID,timeout)

5.3 SelectPopUp(windowID)/SelectWindow(windowID)  ---类似于SWTBot中的select

- SelecpPopUp多用于选择子窗口,SelectWindow可用于选择任意窗口

5.4 OpenWIndow(url,windowID)

- 在某个弹出窗口中打开新的url


6.       结束测试

Close(),Stop(),shutDownSeleniumServer()

- Close()用于关闭测试所用的浏览器,而Stop方法用于终止当前对selenium的服务器的会话并关闭selenium控制界面。一般在结束时,会同时调用这两个方法


四 Selenium 2(WebDriver)

1. 选择浏览器开始测试,e.g WebDriver driver = new FireFoxDriver();

2. 浏览器导航对象:在获取该对象之后,就可以执行跳转到指定URL,前进,后退,刷新页面等操作了: to(),back(),Refrsh()

3. 查找对象By

3.1 ID(id)

- e.g. driver.findElement(By.id("kw"))

3.2 Name(name)

- driver.findElement(By.name("tj_login"))

3.3 LinkText(linkText)

-   按连接的文本进行查找,例如百度首页的登陆:.findElement(By.linkText("登陆"))

3.4 PartialLinkText(text)

- 按连接的文本进行模糊查找

3.5 ClassName(className)

- 按元素的class属性进行查找

3.6 TagName(tagName)

- 按照标记名称进行查找,并返回第一个匹配项

3.7 XPath(xPath)

-     其他的方法都找不到的话,用xPath进行查找

4. 操作页面元素:

4.1 click

4.2 sendkeys(text): 用于给input元素输入文本

4.3 clear: 清空input元素的值

4.4 Submit:用于对指定元素所在的form元素进行提交操作。(不太熟)

5. 获取页面元素及页面元素的内容

5.1 getTitle()

5.2 getCurrentUrl()

5.3 getText()

5.4 isSelected()

-  用于获取复选框或是单选框的勾选情况

5.5. getTagName()

- 用于获取元素的tag名字

5.6 isEnabled()

- 用于存储input等元素的可编辑状态

5.7 isDisplay()

5.8 GetAttribute(attributeName)

- 获得指定属性的值


6.  弹出对话框的处理-与selenium不同

- JavaScript共有三种弹出对话框:Alert,Confirmation,Prompt

- 将三种对话框都视为Alert对象,并且可以看到弹出的对话框

6.1 Accept()

- 相当于click 确定按钮

- 用法为如下:

btn.click()

driver.switchTo().alert().accept();

6.2 Dismiss()

-  相当于click 取消按钮

- 用法如下:

btn.click();

driver.switchTo().Dismiss();

- 对于alert,dismiss和accept是一样的,所有没有必要用alert

6.3 sendKeys(text)

- 紧适用于Prompt

6.3 getText()

- 获取谈粗对话框的文本内容


7. 浏览器多窗口处理

7.1 getWindowHandles()

-     取得所有窗口的标识符(句柄)

7.2 window(windowName)

- 窗口之间的切换用switchTo


8. 设置管理

在selenium 2中,可以通过Options对象对测试进行设置,设置内容包括Cookie,超时时间和浏览器窗口。获得Options对象如下:

WebDriver    driver = new FireFox(); Options option = driver.manage();

8.1 getCookies():

- option.getCookies()

8.2 windows()

-     可以对当年的窗口进行简单的控制,例如查看窗体的坐标和大小,并将其最大化。

- Window window = option.window();
        int width = window.getSize().width;
        int length = window.getSize().height;
        window.maximize();

8.3 Timeouts():

- Timeouts()方法会获得Timeouts对象。Timeouts timeout = option.timeouts();

- Timeouts对象包含3种方法。

- ImplicitlyWait():设置脚本在查找元素时的最大等待时间

- SetPageLoadTimeout():页面操作超时时间,例如页面进行跳转或刷新的最大等待时间。

- SetScriptTimeout():设置脚本异步执行的时间。

e.g timeout.implicitlyWait(30, TimeUnit.SECONDS);


9 为测试操作添加事件

9.1
































  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值