Selenium IDE工具总结Word格式.docx

上传人:b****6 文档编号:16212282 上传时间:2022-11-21 格式:DOCX 页数:13 大小:22.65KB
下载 相关 举报
Selenium IDE工具总结Word格式.docx_第1页
第1页 / 共13页
Selenium IDE工具总结Word格式.docx_第2页
第2页 / 共13页
Selenium IDE工具总结Word格式.docx_第3页
第3页 / 共13页
Selenium IDE工具总结Word格式.docx_第4页
第4页 / 共13页
Selenium IDE工具总结Word格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Selenium IDE工具总结Word格式.docx

《Selenium IDE工具总结Word格式.docx》由会员分享,可在线阅读,更多相关《Selenium IDE工具总结Word格式.docx(13页珍藏版)》请在冰豆网上搜索。

Selenium IDE工具总结Word格式.docx

css=input[type=submit]"

);

//此句对应上面的句一

$this->

//此句和下一句,对应上面的句二

waitForPageToLoad("

30000"

区别在于:

clickAndWait后会有一个默认的页面等待时间为30秒;

而click没有等待时间;

Andwait这个后缀,告诉我们,该命令将使浏览器向服务器产生一个请求,使

Selenium等待加载一个新的页面。

辅助accessors:

这是辅助工具。

用于检查应用程序的状态并将结果存储到变量中。

如:

storeElementPresent(locator,variableName)

其中参数:

locator表示元素定位器;

variableName用于存储结果的变量名。

即将locator定位到的状态存储到variableName变量中。

如果该元素出现返回true,否则返回false

可同断言一同使用。

断言assertion:

验证应用程序的状态是否同所期望的一致。

常见的断言包括:

验证页面内容,如标题是否为X或当前位置是否正确,或是验证该

复选框是否被勾选。

断言被用于三种模式:

assert、verify、waitfor

Assert失败时,该测试将终止。

Verify失败时,该测试将继续执行,并将错误记入日显示屏。

也就是说允许此单个

验证通过。

确保应用程序在正确的页面上。

Waitfor用于等待某些条件变为真。

可用于AJAX应用程序的测试。

如果该条件为真,他们将立即成功执行。

如果该条件不为真,则将失败并暂停测试。

直到超过当前所设定的超时时间。

一般跟setTimeout时间一起用

断言常用的有:

assertLocation(判断当前是在正确的页面)、

assertTitle(检查当前页面的title是否正确)、

assertValue(检查input的值,checkbox或radio,有值为”on”无为”off"

)、

assertSelected(检查select的下拉菜单中选中是否正确)、

assertSelectedOptions(检查下拉菜单中的选项的是否正确)、

assertText(检查指定元素的文本)、

assertTextPresent(检查在当前给用户显示的页面上是否有出现指定的文本)、assertTextNotPresent(检查在当前给用户显示的页面上是否没有出现指定的文本)、assertAttribute(检查当前指定元素的属性的值)、

assertTable(检查table里的某个cell中的值)、

assertEditable(检查指定的input是否可以编辑)、

assertNotEditable(检查指定的input是否不可以编辑)、

assertAlert(检查是否有产生带指定message的alert对话框)

waitForElementPresent(等待检验某元素的存在。

为真时,则执行。

具体实现中出现的问题:

将录制的脚本转成PHPUNIT在服务器端运行总失败。

开始要作如下工作:

1.在setUp()函数中添加语句:

每次脚本运行,都将清空数据库的语句

`/home/www/selenium-php/yuezhan/rebuilddb.sh`;

注意:

用倒斜杠,数字1左边的键

//根据项目需要而修改;

2.将默认的浏览器代码修改:

将$this->

setBrowser("

*chrome"

改成$this->

*firefox"

可以不用修改代码的方法:

Selenium工具OptionsOptions选择Formats选项卡

选择PHP-PHPUNIT将Environment里的浏览器改成firefox即可,

这样子录制的脚本转化成PHP后,也就不用修改此部分代码了。

3.在第2点的基础上,在上面添加两句代码:

setHost("

192.168.8.24"

setPort(4445);

//此句可以不加,根据自己服务器端口而定

4.录制的脚本中如有上传图片的路径。

也要根据服务器所在的环境作修改。

如在同一环境下可不作修改。

不在同一环境下,要将图片路径修改成服务器环境中图片所在的路径下。

5.录制的脚本一定要从登录开始录制。

在没有解决COOIKE之前,必须这么做。

运行脚本时,

常见问题1:

报错:

ERROR:

TherewasanunexpectedAlert!

[ajax错误].

错误原因:

AJAX错误,没有找到ALERT提示的框架,因而报异常错误

解决方法一:

这是一个“下一步”按钮。

进入的页面中,有AJAX。

可以此句前面添加:

setSpeed(1000)让其执行速度变慢1秒。

具体php代码:

setSpeed("

1000"

)//从下一句开始,执行速度放慢

$this->

type("

name=player[player1][name]"

"

元一"

0"

)//恢复到正常执行速度

根本的解决方法:

$this->

waitForCondition("

selenium.browserbot.getUserWindow().jQuery.active==0"

3000"

//此处3000,即限定的超时时间timeout。

解释waitForCondition用法:

waitForCondition(JavaScriptSnippet,time)

-在限定时间内,等待一段JavaScript代码返回true值,超时则停止等待

其中"

这是一段javascript语句,

意思:

检查得到的窗体里AJAX的活动数量为0时,则为0即无AJAX活动了,则为真,为真就可以继续向下运行。

反之,在限定的timeout3秒时间内,活动数仍不为0,则会报错。

常见的框架:

jQuery:

“jQuery.active”

Prototype:

“Ajax.activeRequestCount”

Dojo:

“dojo.io.XMLHTTPTransport.inFlight.length

我们用的是jQuery框架,即写成jQuery.actiive

3000是限时3秒。

不正确的解决方法:

for($second=0;

;

$second++){

if($second>

=60)$this->

fail("

timeout"

try{

if($this->

isElementPresent("

))break;

}catch(Exception$e){}

sleep

(1);

}

此处用的方法:

waitForElementPresent(locator,variableName)验证指定元素在页面上。

此方法解决AJAX错误时无效。

其检验元素的方法,可解决javascript的问题。

常见问题4中会详解。

常见问题2:

服务器连接不上。

解决方法:

目前我们服务器上同时只能边接两台机器。

所以,这儿的解决方法,只能限于两台哦。

常见问题3:

超时timeout

在服务器上跑,页面加载时间有时会变的慢

页面加载时间修改一下。

延长页面加载时间

原语句:

可更改为:

60000"

解决方法二:

将运行速度放慢,在页面加载时间前一句加如下语句

)//运行速度放慢

当然,页面加载完之后,可以提交接钮语句之后,加如下语句,将运行速度恢复到正常。

)//恢复到正常执行速度

常见问题4:

登录时,没有发现某个元素。

[error]Elementid=usernamenotfound

如,我们虎扑网站,当前状态为未登录。

先点击进入论坛页面。

然后点击“登录”,

录制的脚本,在回放中,会错误。

没有该元素。

例如录制脚本:

ComandTargetValue

open/

clicklink=登录

typeid=usernameadmin

typeid=passwordadmin

………………

clickAndWaitlink=退出

open("

/"

link=登录"

id=username"

admin"

id=password"

…………

link=退出"

回放时,到了用户名那一句,就会报无法找到元素的错误。

登录时,会弹跳出一个登录对话框。

此对话框即是Javascript语句写的。

用waitForElementPresent方法,其方法是检查页面上的元素是否存在。

登录之后的语句,都是JAVASCRIPT语句执行之后出现的。

建议检验最后一个可输入元素。

waitForElementPresentid=password//此句为添加的辅助代码,检查元素

typeid=usernameadminuser

typeid=passwordadminpwd

for($second=0;

//超过60秒,则报超时错误

if($this->

//检查用户名这个元素

adminuser"

adminpwd"

上述中selenium中的waitForElementPresentid=password这一句,转化成PHPUNIT代码后,即是for循环代码那一段。

在PHPUNIT中也可以直接添加该段代码。

且完全可以将for循环代码这一段替换成:

waitForElementPresent("

这样单独的一句。

完全可以只写这一句,也可以达到检查这个元素的效果。

解释waitForElementPresent用法:

waitForElementPresent(locator)等待指定元素出现在页面上。

常见问题5:

录制时必须从登录开始录制,那么有没有什么办法可以解决呢。

如下PHPUNIT代码:

<

?

php

`/home/www/selenium-php/yuezhan/rebuilddb.sh`;

//数据库初始化

classHCYZ_LoginTestextendsPHPUnit_Extensions_SeleniumTestCase

{

privatestatic$YZLoginCookie;

//定义了一个私有的静态变量,变量名为YZLoginCookie

protectedfunctionsetUp()

{

setBrowserUrl("

http:

//kangying.yuezhanerqi.test.hc.sf/"

publicfunctiontestLogin()//这个类就是测试登录。

backend_test.php/om_match"

//打开后台URL

name=backend_user[username]"

康莹"

name=backend_user[password]"

kangying"

css=input.button"

self:

:

$YZLoginCookie=$this->

getCookieByName("

symfony"

//下面详细解释。

publicfunctiontestOmMatch()//这个类就是测试约战二期的。

//要注意这儿要先打开约战二期的URL

createCookie("

symfony="

.self:

$YZLoginCookie,"

path=/"

//下面详细解释

//注意,创建完COOKIE要再打开下URL

}

解释下面两句:

1.self:

Symfony这个参数是SESSION名。

getCookieByName这是一个取得Cookie值的方法。

并将取的到值放到YZLoginCookie变量中。

因为YZLoginCookie变量是私有的。

在PHPUNIT中,私有变量的引用就这么写:

self:

$变量名

这个我们不要太懂。

就记住,定义变量时用的是private,那么用这个变量时,前面加

Self:

(注意:

这儿的两个冒号,必须是半角状态下的冒号)就可以了。

2.$this->

createCookie()这个就是创建Cookie的方法

它的参数是刚刚self:

$YZLoginCookie变量中的值。

将其创建好的Cookie存放到path=/这个路径下

常见问题6:

运行PHPUNIT代码时报类似如下错:

Failedassertingthat<

boolean:

false>

istrue.错误原因:

此处错误存在于断言检查中。

检查出来返回的值是失败的。

1.检查断言语句是没有放错位置。

应将语句放置要检查代码的上一行

2.主要检查引号中里面的语句有无错误。

比如:

必须填写"

这里面与页面中有出入。

应为

必需填写"

再比如:

css=input[typ=button"

这里应该为:

css=input[type=button]"

少了右边的中括号,还有type的e

先看有没有少写了括号或中括号;

再来检查单词有无编写错误。

以及有无错别字的错误。

常见问题7:

Parseerror:

syntaxerror,unexpectedT_IFin/home/www/selenium-php/zhaomu.phponline44

第44行。

提示有代码错误。

检查第44行以及44附近的行。

先看有没有少写了分号;

然后看编写或复制代码时,有无加了代码行的编号(即代码前的数字);

最后检查单词有无编写错误。

常见问题8:

运行PHPUNIT代码时报类似如下错:

PHPUnit_Framework_Exception:

ResponsefromSeleniumRCserverfortestComplete().

Therewerenoalerts.

PHPUNIT中框架异常出错。

它找的错误原因,没有Alert。

这里alert是一个提示信息,一般出现在当前窗体中以弹层方式显示的确认对话框。

在确认对话框提示代码的上一行,添加一段等待审核提示信息即可。

方法一、可以直接在selenium中,在弹出提示框代码的上一行。

open/backend_test.php/om_match

clicklink=招募

………………

clickcss=input[type=button]

waitForAlertPresent//此句添加断言,等待警告/提示框

assertAlert请等待信息审核

保存,转成PHPUNIT后代码为:

/backend_test.php/om_match"

link=招募"

……………………

for($second=0;

isAlertPresent())break;

//检查Alert警告/提示框

assertEquals("

请等待信息审核"

$this->

getAlert());

上述中selenium中的waitForAlertPresent这一句,转化成PHPUNIT代码后,即是for循环代码那一段。

方法二、在PHPUNIT中也可以直接添加该段代码。

waitForAlertPresent();

这样单独的一句。

***注意:

参数为空

解释waitForAlertPresent用法:

waitForAlertPresent()等待警告/提示出现。

注意,参数为空

如何在自动化测试中生成代码覆盖报告?

在PHPUNIT测代码中加入如下两个语句:

protected$coverageScriptUrl='

和$this->

/phpunit_coverage.php?

PHPUNIT_SELENIUM_TEST_ID=yz"

将代码加哪到呢?

如下例子:

如我录制好代码,转换成phpunit代码。

命名为liangle-ccov.php

现在我们为liangle-ccov.php添加完测试代码之后为:

<

classExampleextendsPHPUnit_Extensions_SeleniumTestCase

protected$coverageScriptUrl='

//加入第一句,下面会详细解释。

protectedfunctionsetUp()

setBr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1