`

使用Selenium测试Web界面时使用循环控制功能

阅读更多

Selenium是一个很好用的Web界面测试框架。但它的功能也有不足之处,比如: 在Selenium IDE中不支持程序控制语句。下面介绍如何在Selenium IDE中添加程序控制功能。

1)下载Selenium插件 (sideflow.js): 

如果不想下载,直接把下面的代码保存到本机也可。

 

var gotoLabels= {};
var whileLabels = {};

// overload the original Selenium reset function
Selenium.prototype.reset = function() {
    // reset the labels
    this.initialiseLabels();
    // proceed with original reset code
    this.defaultTimeout = Selenium.DEFAULT_TIMEOUT;
    this.browserbot.selectWindow("null");
    this.browserbot.resetPopups();
}

Selenium.prototype.initialiseLabels = function()
{
    gotoLabels = {};
    whileLabels = { ends: {}, whiles: {} };
    var command_rows = [];
    var numCommands = testCase.commands.length;
    for (var i = 0; i < numCommands; ++i) {
        var x = testCase.commands[i];
        command_rows.push(x);
    }
    var cycles = [];
    for( var i = 0; i < command_rows.length; i++ ) {
        if (command_rows[i].type == 'command')
        switch( command_rows[i].command.toLowerCase() ) {
            case "label":
                gotoLabels[ command_rows[i].target ] = i;
                break;
            case "while":
            case "endwhile":
                cycles.push( [command_rows[i].command.toLowerCase(), i] )
                break;
        }
    }  
    var i = 0;
    while( cycles.length ) {
        if( i >= cycles.length ) {
            throw new Error( "non-matching while/endWhile found" );
        }
        switch( cycles[i][0] ) {
            case "while":
                if( ( i+1 < cycles.length ) && ( "endwhile" == cycles[i+1][0] ) ) {
                    // pair found
                    whileLabels.ends[ cycles[i+1][1] ] = cycles[i][1];
                    whileLabels.whiles[ cycles[i][1] ] = cycles[i+1][1];
                    cycles.splice( i, 2 );
                    i = 0;
                } else ++i;
                break;
            case "endwhile":
                ++i;
                break;
        }
    }
}

Selenium.prototype.continueFromRow = function( row_num )
{
    if(row_num == undefined || row_num == null || row_num < 0) {
        throw new Error( "Invalid row_num specified." );
    }
    testCase.debugContext.debugIndex = row_num;
}

// do nothing. simple label
Selenium.prototype.doLabel = function(){};

Selenium.prototype.doGotolabel = function( label )
{
    if( undefined == gotoLabels[label] ) {
        throw new Error( "Specified label '" + label + "' is not found." );
    }
    this.continueFromRow( gotoLabels[ label ] );
};

Selenium.prototype.doGoto = Selenium.prototype.doGotolabel;

Selenium.prototype.doGotoIf = function( condition, label )
{
    if( eval(condition) ) this.doGotolabel( label );
}

Selenium.prototype.doWhile = function( condition )
{
    if( !eval(condition) ) {
        var last_row = testCase.debugContext.debugIndex;
        var end_while_row = whileLabels.whiles[ last_row ];
        if( undefined == end_while_row ) throw new Error( "Corresponding 'endWhile' is not found." );
        this.continueFromRow( end_while_row );
    }
}

Selenium.prototype.doEndWhile = function()
{
    var last_row = testCase.debugContext.debugIndex;
    var while_row = whileLabels.ends[ last_row ] - 1;
    if( undefined == while_row ) throw new Error( "Corresponding 'While' is not found." );
    this.continueFromRow( while_row );
}
 

下载地址: https://github.com/darrenderidder/sideflow

 

2)在Selenium中配置插件。如下图所示,添加sideflow.js 到 "Selenium Core extensions (user-extensions.js)" 文本框中,重新启动Selenium IDE。


 

3) 这样就可以在Selenium中使用流程控制了,例如


  • 大小: 49.6 KB
  • 大小: 72.5 KB
0
0
分享到:
评论

相关推荐

    selenium-ide-3.17.4.xpi

    Selenium IDE是基于Selenium框架的,Selenium是一个用于Web应用程序测试的工具套件,支持多种浏览器和多种操作系统,是Web应用测试领域内广泛使用的工具之一。 Selenium IDE的主要功能包括记录用户与浏览器的交互...

    Python+selenium自动化测试源码分享,讲解详细

    Selenium则是一款强大的网页自动化测试工具,能够模拟用户行为,对Web应用程序进行全面的功能验证。这篇分享将深入探讨Python与Selenium结合进行自动化测试的相关知识点。 首先,我们需要理解Python的基础语法和...

    Selenium文档 v1.0(英文)

    - **IDE界面**:介绍Selenium IDE的主要界面和工具栏功能。 - **特性**: - **录制模式**:自动记录用户在浏览器中的操作并生成测试脚本。 - **编辑功能**:提供强大的脚本编辑功能,允许用户修改或添加新的测试...

    Selenium用户指南

    - Selenium 是一套用于 Web 应用程序测试的工具集合。 - Selenium 支持多种编程语言(如 Java、C#、Python 等)进行测试脚本的编写。 - Selenium 2.0 的更新意味着它不仅增强了功能,而且增加了更多的兼容性和...

    Selenium IDE 3.1.1 crx.zip

    测试脚本可以在需要时进行编辑,添加条件判断、循环和其他复杂的逻辑,以满足更高级的测试需求。 自动化测试对于确保Web应用的质量至关重要,因为它能有效地减少手动测试的工作量,提高测试覆盖率,并且可以在每次...

    selenium_ide附件组件

    Selenium IDE(集成开发环境)是Selenium测试套件的一个强大工具,专为Web应用程序的功能自动化测试设计。它是一个Firefox浏览器插件,允许用户录制、编辑和回放测试脚本。在"硒IDE附件组件"中,我们主要关注的是...

    web相关的测试总结等

    可用性测试关注用户体验和界面设计,确保Web应用易于使用且直观。 - **导航测试**:检查网站的导航结构是否清晰、直观。 - **UI测试**:评估用户界面的布局、颜色方案和字体选择是否吸引人。 - **可访问性测试**:...

    tdd-for-web-development-with-django-and-selenium

    - 在本书中,功能性测试是使用Selenium进行的,Selenium是一种用于自动化浏览器操作的强大工具,特别适合用于测试Web应用。 3. **测试先行原则(Do Nothing Until You Have a Test)**: - 这是TDD的一个基本原则,...

    selenium-批量下载图片及滚动加载的元素获取

    在IT行业中,Selenium是一个广泛使用的自动化测试工具,尤其在Web应用测试方面。它允许开发者模拟用户行为,如点击按钮、填写表单以及执行其他与界面交互的操作。在这个场景中,我们将探讨如何利用Selenium来批量...

    SoapUI5+Selenium Webdriver配置

    例如,先使用SoapUI的内置功能对API进行测试,然后根据API响应的结果来决定是否触发Selenium WebDriver的Web界面测试。 9. **高级技巧**: 为了更高效地管理测试,你可以利用Groovy脚本动态构建测试逻辑,如条件判断...

    软件测试->自动化测试;利用java语言结合selenium技术实现对购物网站的自动化测试

    利用java+selenium技术实现了自动化测试,首先通过获取该网站地址,然后通过元素定位的...利用它,我们可以编写相关的自动化程序,让程序完全像人一样在浏览器里面操作Web界面,比如模拟鼠标点击、模拟键盘输入等等。

    Introduction Twill and Selenium

    结合使用Twill和Selenium,可以构建强大的Web自动化测试方案。Twill适用于快速原型开发和简单的测试场景,而Selenium则适合大型项目和复杂的交互测试。通过`ez_setup.py`安装它们,可以使整个过程更加顺畅。了解和...

    Selenium官方开发文档(英文原版)

    ### Selenium官方开发文档知识点概述 #### 一、引言与Selenium简介 - **引言**:Selenium作为一款强大的工具集,旨在为...通过学习这些知识,可以更好地掌握Selenium的使用方法,从而有效地进行Web应用的自动化测试。

    Selenium_IDE

    Selenium IDE是一款功能强大的自动化测试工具,专为Web应用程序设计,旨在简化测试案例的创建与执行过程。这款工具以Firefox附加组件的形式存在,提供了直观的用户界面,使得用户能够轻松地录制和回放测试场景,无需...

    selenium+java 如何切换窗口.docx

    在自动化测试领域,Selenium WebDriver 是一款广泛应用的工具,用于模拟用户与Web界面的交互。在某些场景下,比如点击一个链接或者按钮后,新的窗口可能会弹出,这时我们需要让Selenium焦点转移到新窗口以便进行后续...

    Web程序压力测试的客户端工具

    在IT行业中,压力测试是确保Web应用程序在高负载或大量并发用户访问时依然稳定、高效运行的关键步骤。本文将深入探讨“Web程序压力测试的客户端工具”,并基于提供的标签和资源,来解析这一主题。 首先,我们要理解...

    Web(基于GUI) 自动化测试实践课程.rar

    特别是在Web应用程序开发中,基于GUI(图形用户界面)的自动化测试可以帮助开发者快速验证功能,确保产品在各种交互场景下的正确性。本实践课程围绕“Web(基于GUI) 自动化测试”展开,旨在帮助学员掌握自动化测试的...

    web自动化课程

    - **定义**:Web自动化测试是指使用自动化工具和技术来模拟用户与Web应用交互的过程,从而验证应用的功能、性能及可靠性是否符合预期的一种测试方法。 - **目的**:提高测试效率、减少人为错误、确保产品质量。 - **...

Global site tag (gtag.js) - Google Analytics