Selenium IDE工具总结
Selenium IDE工具总结
基本介绍:
Selenium工具专门为WEB应用程序编写的一个验收测试工具.
Selenium的核心:browser bot,是用JAVASCRIPT编写的。
Selenium工具有4种:Selenium IDE, Selenium Control, Selenium Core
这儿我们主要总结了Selenium-IDE工具
Selenium—IDE校园文化建设方案只限于firefox浏览器中使用。
数学工具软件
Selenium命令分成三类:
操作(action)、辅助(accessors)和断言(assertion):
操作action:
      模拟用户与 Web 应用程序的交互。一般用于操作应用程序的状态。
      如点击链接,选择选项的方式进行工作。如果一个动作执行失败,或是有错误,当前的测试将会停止执行。
操作中常见命令有:open(打开页面)
什么是中小板click(点击)
clickAndWait(点击并等待)
type(文本类型)
select(选择下拉菜单)
selectWindow(选择弹出窗口)
pause(等待指定时间,以毫秒为单位,即要睡眠的时间)
setSpeed(设定执行速度。以毫秒延迟间隔长度.默认没有延迟,即为0)
setTimeout(指定等待动作完成的等待时间。默认为30秒。
需要等待的动作包括了OPEN 和WAITFOR
goBack(模拟用户点击其浏览器上的“back"按钮)
close(模拟用户点击弹出窗体或表单标题栏上的”关闭"按钮)
  click与clickAndWait的区别:
例如对比录制脚本:
Comand      Target
click          css=input[type=submit]            //句一
clickAndWait  css=input[type=submiit]          //句二
转成PHPUNIT后代码为:
    $this—〉click(”css=input[type=submit]”);        //此句对应上面的 句一
$this—〉click("css=input[type=submit]");        //此句和下一句,对应上面的 句二
    $this->waitForPageToLoad("30000");
区别在于:clickAndWait后会有一个默认的页面等待时间为30秒;而click没有等待时间;
      A算什么男人歌词ndwait这个后缀,告诉我们,该命令将使浏览器向服务器产生一个请求,使
      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->setBrowser(”*firefox”);
可以不用修改代码的方法:
Selenium工具OptionsOptions选择Formats选项卡
        选择PHP—PHPUNIT将Environment里的浏览器改成firefox即可,
这样子录制的脚本转化成PHP后,也就不用修改此部分代码了。
3。 在第2点的基础上,在上面添加两句代码:
    $this—〉setHost(”192。168。8.24”);
    $this—〉setPort(4445);          //此句可以不加,根据自己服务器端口而定
4。 录制的脚本中如有上传图片的路径。
  也要根据服务器所在的环境作修改。如在同一环境下可不作修改。不在同一环境下,要将图片路径修改成服务器环境中图片所在的路径下。
小学生猜字谜语大全5. 录制的脚本一定要从登录开始录制.在没有解决COOIKE之前,必须这么做。
运行脚本时,
常见问题1:报错:ERROR: There was an unexpected Alert! [ajax错误]。
错误原因:AJAX错误,没有到ALERT提示的框架,因而报异常错误
解决方法一:$this—〉click("css=input[type=submit]”);这是一个“下一步”按钮.和女生聊天话题大全
          进入的页面中,有AJAX。
          可以此句前面添加:setSpeed(1000)让其执行速度变慢1秒。
        具体php代码:
        $this—〉setSpeed("1000”)        //从下一句开始,执行速度放慢
        $this—>click(”css=input[type=submit]”);
        $this—>waitForPageToLoad(”30000”);
        $this-〉type("name=player[player1][name]”, "元一”);
        $this->setSpeed(”0”)          //恢复到正常执行速度
根本的解决方法:
      $this—>waitForCondition("selenium。browserbot。getUserWindow()。jQuery。active == 0", "3000");      //此处3000,即限定的超时时间timeout。
      $this-〉click(”css=input[type=submit]”);
解释waitForCondition用法:
waitForCondition(JavaScriptSnippet,time)
- 在限定时间内,等待一段JavaScript 代码返回true 值,超时则停止等待
    其中”selenium。browserbot。getUserWindow()。jQuery.active == 0”这是一段javascript语句,
  意思:检查得到的窗体里AJAX的活动数量为0时,则为0即无AJAX活动了,则为真,为真就可以继续向下运行。 反之,在限定的timeout 3秒时间内,活动数仍不为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(”css=input[type=submit]")) break;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。