当前位置: 首页 > news >正文

《零成本实现Web自动化测试--基于Selenium》 Selenium-RC

一. 简介

 Selenium-RC可以适应更复杂的自动化测试需求,而不仅仅是简单的浏览器操作和线性执行。Selenium-RC能够充分利用编程语言来构建更复杂的自动化测试案例,例如读写文件、查询数据库和E-mail邮寄测试报告。

当测试案例遇到selenium-IDE不支持的逻辑时,你应该首先想到Selenium-RC。Selenium-IDE不支持下面逻辑:

  • 条件判断;
  • 循环;
  • 日记记录和报告测试结果;
  • 错误处理,特别是预料之外的错误;
  • 数据库测试;
  • 测试案例组合;
  • 重复执行失败案例;
  • 测试案例依赖;
  • 测试失败时捕获屏幕快照。

虽然这些任务不被Selenium锁直接支持,但是通过编程语言和特定语言的Selenium-RC客户端库文件都可以实现。

二. Selenium-RC 基础

1. Selenium-RC 工作原理

 首先,我们描述Selenium-RC组件是如何运转的,以及它们在测试案例运行过程中扮演什么角色。

1.1 RC组件

  • Selenium Server,它负责启动和关闭浏览器,解释和运行从测试程序传来的Selenese命令,就像一个HTTP代理一样。截取和验证浏览器与待测应用(AUT)之间的HTTP消息;
  • 客户端库文件提供编程语言和Selenium-RC Server 之间的接口

Selenium-RC的一个简单的架构图,如下所示:

上图说明客户端库文件将命令传递给了Server,接着Server使用Selenium-Core的JavaScript命令,将Selenium命令传递给浏览器。浏览器会使用自带的JavaScript翻译器来执行Selenium命令。这意味着测试脚本中的Selenese操作和验证将被执行。

1.2 Selenium Server

    Selenium Server从你的测试程序接受Selenium命令,翻译它们,想测试程序反馈运行这些测试案例的结果。

    在测试程序打开浏览器时(使用客户端库文件的API函数),RC Server 绑定Selenium Core 并自动将它嵌入到浏览器中。Selenium-Core 是一个JavaScript程序,实际上是一系列JavaScript函数,它们使用浏览器内置的JavaScript翻译器来翻译和执行Selenese命令。

    Server使用简单的HTTP GET/POST请求从你的测试程序中获取Selenese命令。这意味着你可以使用任何支持HTTP请求的编程语言来自动化基于浏览器的测试案例。

1.3 客户端库文件

    客户端库文件提供编程接口,允许你使用自己编写的程序来运行Selenium命令。对于每一种支持的语言都有对应客户端文件。Selenium客户端库文件提供编程接口(API),例如:一系列函数,以便通过你的程序来运行Selenium命令。对于任何一种接口而言,都有对应的函数支持每一个Selenese命令。

     客户端库文件获取一条Selenese命令,并将它传递给Selenium Server,以便执行一个指定操作或者基于待测应用(AUT)进行测试。客户端库文件收到命令的执行结果,再将其传递给你的测试程序。程序接收到结果后,将它保存在变量中,接着报告成功还是失败。如果结果是医疗之外的失败,还能有针对性地采取正确措施。

    因此要创建测试程序,你只须使用客户端库文件的API来编写程序,程序会去运行一系列Selenium命令。如果你已经在Selenium-IDE中创建了一个Selenese测试脚本,可以用它来生成Selenium-RC代码。Selenium-IDE可以将它的Selenium命令,翻译成客户端驱动的API函数调用。

  2. Selenium-RC 架构

 <略过>

  3. Selenium-RC 安装

从如下地址: http://seleniumhq.org/download ,下载Selenium-RC zip文件后,你会发现它包含很多子文件夹。这些文件夹中包含使用Selenium-RC所需要的一切组件。

一旦你选择了一种工作语言,你需要:

  • 安装Selenium-RC服务器;
  • 使用特定语言的客户端驱动,来创建一个编译工程。

Python脚本语言下Selenium-RC的自动化配置如下:

Selenium-RC Python 2.7 环境配置

三. Selenium-RC 使用

1. 从Selenese 到测试程序

试用Selenium-RC的主要任务就是将你的Selenese命令转为编程语言。下面是一个Python的例子:

1.1. 测试脚本样例

CommandTargetValue
open/
typeid=kwhttp://www.cnblogs.com/wuzhiming/
clickAndWaitid=su
assertTitleexact:http://www.cnblogs.com/wuzhiming/_百度搜索

1. e

lenium转为编程代码文件->Export Test Case AS->Python 2 / unittest/ Remote Control

导出代码如下:

from selenium import selenium
import unittest, time, reclass baidu(unittest.TestCase):def setUp(self):self.verificationErrors = []self.selenium = selenium("localhost", 4444, "*chrome", "http://www.baidu.com/")self.selenium.start()def test_baidu(self):sel = self.seleniumsel.open("/")sel.type("id=kw", "http://www.cnblogs.com/wuzhiming/")sel.click("id=su")sel.wait_for_page_to_load("10000")self.assertEqual(u"http://www.cnblogs.com/wuzhiming/_百度搜索", sel.get_title())def tearDown(self):self.selenium.stop()self.assertEqual([], self.verificationErrors)if __name__ == "__main__":unittest.main()

2. 构建你的测试程序

现在将距离说明如何使用Python语言来编写测试程序。这里有两项基本任务:

(1). 通过Selenium-IDE产生你的测试脚本,并转换为编程语言,可能还需要加以修改;

(2).写一个简单的主程序来执行这些脚本

Pyunit 是使用Python时的测试框架。要学习Pyunit,请参看官方文档<http://docs.python.org/library/unittest.html>

3. 学习Selenium-RC API

a.启动浏览器

代码如下:

        self.selenium = selenium("localhost", 4444, "*chrome", "http://www.baidu.com/")self.selenium.start()

创建浏览器实例所需的参数如下:

  • Host
    • 该参数指明所在主机的IP地址。
  • Port
    • 该参数指明Server监听的TCP/ip端口,客户端将使用此端口来建立连接。
  • Browser
    • 指明希望使用的浏览器,是必选参数
  • URL
    • 该参数指明被测系统的基础URL,是必选参数

b. 执行命令

一旦你初始化了浏览器,并将其指定给一个变量(通常命名为“Selenium”)。你可以通过浏览器变量来调用相关办法,以便执行Selenese命令,例如,调用selenium对象的type方法。

selenium.type("field-id","string to type")

浏览器会进行一个输入操作,通过指定的定位器参数定位输入框,然后将指定的字符串输入。

4. 报告测试结果

如果使用Python客户驱动,HTMLTestRunner可以被用来产生测试报告。可以参考:

http://tungwaiyip.info/software/HTMLTestRunner.html

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

相关文章:

《零成本实现Web自动化测试--基于Selenium》 Selenium-RC

一. 简介 Selenium-RC可以适应更复杂的自动化测试需求&#xff0c;而不仅仅是简单的浏览器操作和线性执行。Selenium-RC能够充分利用编程语言来构建更复杂的自动化测试案例&#xff0c;例如读写文件、查询数据库和E-mail邮寄测试报告。 当测试案例遇到selenium-IDE不支持的逻辑…...

来阿里我的收获是什么?(未完待续)

不知不觉来阿里两年多了&#xff0c;每天都过的很充实&#xff0c;感觉这段时间没有学到什么东西&#xff0c;但是又觉得收获满满&#xff0c;恰好又好久没有动笔写过些什么了&#xff0c;所以有了这个动笔念头。 之前技术方面记录的比较多&#xff0c;这次就记录一些比较磨心的…...

golang net/http库的学习

net/http 是 Golang 标准库中用来构建 HTTP 服务器和客户端的包&#xff0c;它提供了很多功能强大的方法和接口&#xff0c;可以让您方便地构建和处理 HTTP 请求和响应。下面是一些学习 net/http 的建议&#xff1a; 了解 HTTP 协议。在学习 net/http 之前&#xff0c;建议先了…...

Spring(AOP)

目录 1. 预备知识-动态代理 1.1 什么是动态代理1.2 动态代理的优势1.3 基于JDK动态代理实现2. AOP 2.1 基本概念2.2 AOP带来的好处3. Spring AOP 3.1 前置通知3.2 后置通知3.3 环绕通知3.4 异常通知3.5 适配器 1. 预备知识-动态代理 1.1 什么是动态代理 动态代理利用Java的反…...

服务搭建篇(六) Kafka + Zookeeper集群搭建

一.Zookeeper 1.什么是Zookeeper ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要 用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂且容 易出错的分布式一致性服务封装起来&#xff0c;构成一个…...

Go基础-可变参数函数

文章目录1 定义2 语法3 给可变函数参数传入切片4 修改可变参数函数中的切片1 定义 可变参数函数是一种参数个数可变的函数。 2 语法 语法 //关键字 函数名(参数1&#xff0c; elems为T类型的可变参数) 返回值类型 func name(params type, elems ...T) returntype{// 函数体 }…...

kali环境搭建

一、渗透为什么要使用kali&#xff1f; 1、系统开源 kali linux实际上是开源的操作系统&#xff0c;其中内置了几百种工具而且是免费的&#xff0c;可以非常方便的为测试提供上手即用的整套工具&#xff0c;而不需要繁琐的搭建环境&#xff0c;及收集工具下载安装等步骤 2、系统…...

电子技术——输出阶类型

电子技术——输出阶类型 输出阶作为放大器的最后一阶&#xff0c;其必须有较低的阻抗来保证较小的增益损失。作为放大器的最后一阶&#xff0c;输出阶需要处理大信号类型&#xff0c;因此小信号估计模型不适用于输出阶。尽管如此&#xff0c;输出阶的线性也非常重要。实际上&a…...

C++设计模式(21)——中介者模式

亦称&#xff1a; 调解人、控制器、Intermediary、Controller、Mediator 意图 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建…...

Gin获取Response Body引发的OOM

有轮子尽量用轮子 &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; &#x1f62d; 我们在开发中基于Gin开发了一个Api网关&#xff0c;但上线后发现内存会在短时间内暴涨&#xff0c;然后被OOM kill掉。具体内存走势如下图&#xff1a; 放大其中一次 在…...

不同方案特性对比

特性对比项 2.4G 蓝牙 868M WIFI 通信速率 低 低 低 高 距离&#xff08;实用可靠&#xff09; 20米 10米 30米 15米 确定性 高 低 高 高 可靠性&#xff08;距离内&#xff09; 高 低 高 高 刷新一个标签时间&#xff08;通常&#xff09; 0.5-1s …...

线性数据结构:链表 LinkList

一、前言 链表的历史 于1955-1956年&#xff0c;由兰德公司的Allen Newell、Cliff Shaw和Herbert A. Simon开发了链表&#xff0c;作为他们的信息处理语言的主要数据结构。链表的另一个早期出现是由 Hans Peter Luhn 在 1953 年 1 月编写的IBM内部备忘录建议在链式哈希表中使…...

对restful的支持 rust-grpc-proxy

目录前言快速体验说明1. 启动目标服务2. 启动代理3. 测试4. example.sh尾语前言 继上一篇博文的展望&#xff0c;这个月rust-grpc-proxy提供了对restful的简单支持。 并且提供了完成的用例&#xff0c;见地址如下&#xff0c; https://github.com/woshihaoren4/grpc-proxy/tre…...

【模拟集成电路】环路滤波器(LPF)设计

环路滤波器 LPF 设计 前言环路滤波器设计仿真结果各部分链接链接&#xff1a;前言 本文主要内容是对环路滤波器 模块设计设计进行阐述&#xff0c;LPF在电荷泵频率综合器中&#xff0c;主要作用是进行滤波&#xff0c;消除毛刺&#xff0c;因此一个简单的RC就可以起到很好的效果…...

adb及cmd部分常用命令

adb及cmd部分常用命令cmd常用命令adb常用命令内存/cpu相关此文章日常记录&#xff0c;有可能存在不准确的地方&#xff0c;仅供参考即可。 cmd常用命令 返回上一级&#xff1a; cd… 进入指定盘&#xff1a; D: 进入指定路径&#xff1a; cd 文件路径 查看子文件列表&#xf…...

ProtoBuf介绍

1 编码和解码编写网络应用程序时&#xff0c;因为数据在网络传输的都是二进制字节码数据&#xff0c;在发送数据时进行编码&#xff0c;在接受数据时进行解码codec&#xff08;编码器&#xff09;的组成部分有2个&#xff1a;decoder&#xff08;解码器&#xff09;和encoder&a…...

数据结构:完全二叉树开胃菜小练习

目录 一.前言 二.完全二叉树的重要结构特点 三.完全二叉树开胃菜小练习 1.一个重要的数学结论 2.简单的小练习 一.前言 关于树及完全二叉树的基础概念(及树结点编号规则)参见:http://t.csdn.cn/imdrahttp://t.csdn.cn/imdra 完全二叉树是一种非常重要的数据结构: n个结点的…...

mybatis与jpa

1、官方文档 mybatis&#xff1a;mybatis-spring – jpa&#xff1a;https://springdoc.cn/spring-data-jpa/ 应用文档 jpa详解_java菜鸟1的博客-CSDN博客 JPA简介及其使用详解_Tourist-xl的博客-CSDN博客_jpa的作用 2、使用比较 mybatis一般用于互联网性质的项目&#x…...

js 求解《初级算法》66. 加一

一、题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数&#xff0c;在该数的基础上加一。最高位数字存放在数组的首位&#xff0c; 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外&#xff0c;这个整数不会以零开头。 示例 1&#xff1a; 输入&#xff1a…...

力扣-游戏玩法分析

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;511. 游戏玩法分析二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.正确示范④提交SQL运行结果5.其他总结…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

热烈祝贺埃文科技正式加入可信数据空间发展联盟

2025年4月29日&#xff0c;在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上&#xff0c;可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞&#xff0c;强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

边缘计算网关提升水产养殖尾水处理的远程运维效率

一、项目背景 随着水产养殖行业的快速发展&#xff0c;养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下&#xff0c;而且难以实现精准监控和管理。为了提升尾水处理的效果和效率&#xff0c;同时降低人力成本&#xff0c;某大型水产养殖企业决定…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...