文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

手把手教您认识、搭建和使用Selenium WebDriver

2024-12-24 15:09

关注

什么是Selenium?

作为一个开源的自动化测试框架,Selenium可以在不同的浏览器和平台上执行应用测试。其主要特征包括:

Selenium的组成

如前所述,由于Selenium是一个框架,而不是单个软件,因此它是由不同组件所组成的套件。如下图所示,Selenium套件具有四个主要部分:

Selenium IDE

Selenium IDE(集成开发环境)是一种简单易学的框架。它可以作为Mozilla Firefox和Google Chrome的浏览器插件。您无需具备任何编程语言方面的经验,即可使用该IDE。通过它提供的记录和回放方法,您可以记录测试的步骤,并导入自己的首选编程语言,进而使用Selenium WebDriver来开展各项测试。因此,为了创建测试原型,您可以从Selenium官方网站-- https://www.selenium.dev/selenium-ide/,下载Selenium IDE。

Selenium RC

Selenium RC是一种服务器,它让用户能够用任何被支持的语言,来创建测试脚本。与Selenium IDE不同,它没有记录和回放功能,但支持并行和远程的方式被执行。作为Selenium1.0,它自身的诸多限制与缺陷,直接催生了Selenium WebDriver。

Selenium WebDriver

Selenium WebDriver克服了Selenium RC的局限性。与Selenium RC不同的是,Selenium WebDriver不需要依赖JavaScript,即可通过直接通信来控制浏览器。与IDE和RC相比,它具有更快的执行时间,有时也被称为Selenium 2.0。鉴于其强大的功能,Selenium WebDriver被广泛地使用在创建自动测试用例的场景中。

Selenium Grid

通过与Selenium RC的配合使用,Selenium Grid能够方便用户在不同的浏览器和计算机上执行并行测试。也就是说,用户可以在多个环境中同时运行并行测试,进而节省了大量的时间。Selenium Grid启用了集线器节点的概念,实现了每个节点都能够从位于中心处的集线器上接收命令。

Selenium WebDriver与Selenium RC不同之处

Selenium WebDriver和Selenium RC之间的区别主要体现在如下方面:

架构上的差异

与Selenium RC相比,Selenium WebDriver的架构更简单。WebDriver通过操作系统来控制浏览器。也就是说,在使用WebDriver时,您只需要将编程语言与浏览器的驱动程序绑定即可。而Selenium RC则要求在运行测试之前,先运行Selenium的远程控制服务器。

Selenium RC实际上充当的是Selenium代码和浏览器之间的中间层,它能够将Selenium Core(一种Javascript程序)注入浏览器,以便其内核通过RC服务器,接收由程序给出的指令。RC服务器在收到浏览器的响应后,会直接将结果显示给最终用户。

执行速度上的差异

在Selenium RC中,每条指令都需要遵循冗长的处理过程,而在Selenium WebDriver中,它们可以通过直接交互,来缩短整个生命周期。具体而言:

互动上的差异

API上的差异

对浏览器支持的差异

Selenium WebDriver的架构

如上图所示,Selenium WebDriver包含四个主要组件:

Selenium客户库/Selenium语言绑定

为了支持多种语言,Selenium开发人员已经构建了各种语言绑定。也就是说,如果您正在用Java来编写测试,那么就可以使用Java绑定。而且,这些客户端的库,完全可以从Selenium官方网站处进行下载。

JSON传输协议(Wire Protocol)

JSON是JavaScript Object Notation的缩写形式。它能够在客户端和服务器之间传输数据。由于JSON能够为对象和数组之类的数据结构提供支持,因此方便了数据的读取和写入。它往往充当REST API,实现HTTP服务器之间的信息传输。

浏览器驱动

为了与浏览器建立安全的连接,Selenium会用到驱动程序。每一种浏览器都会使用自己的驱动程序,来隐藏内部功能的逻辑。此外,每一种自动化语言也都有其对应的浏览器驱动。因此,各种脚本在被执行时,通常:

上文提到的浏览器驱动程序包括:ChromeDriver、GeckoDriver、以及IEDriver等。它们大多可以从GitHub存储库中被下载到。

浏览器

浏览器是我们执行测试的终点。Selenium能够支持诸如:Firefox、Chrome、Internet Explorer、以及Safari等主流浏览器。

Selenium WebDriver的下载、安装和设置

下面,我们来看看如何使用Windows操作系统,将Java作为编程语言,以Eclipse作为IDE,完成Selenium WebDriver的下载、安装和设置。

安装Java

步骤1:从Java官网--https://www.oracle.com/java/technologies/javase-jdk14-downloads.html查找并下载Windows 64位的JDK安装程序。

步骤2:在弹出的窗口中接受许可协议,并单击“下载”。

步骤3:完成后,请到下载文件夹中双击可执行文件,以安装Java。

设置环境变量

步骤1:打开电脑的设置,从“系统”对话框窗口中选择“高级系统设置”。

步骤2:在弹出的窗口中单击“环境变量”按钮。

步骤3:在“系统变量”处双击“路径”。

步骤4:根据系统对应的位置,添加Java安装目录的完整路径,并单击OK。

步骤5:验证是否已安装Java和正确地设置了变量。请打开“命令提示符”并键入:java -version。您将可以看到在系统中新安装的Java版本。

安装Eclipse

步骤1:从Eclipse官网--https://www.eclipse.org/downloads/packages/查找并下载适合Java开发人员专用的Eclipse IDE(最好是最新的稳定版)。

步骤2:下载完成后,请其解压缩到适当的位置。

步骤3:在生成的文件夹中双击eclipse.exe。

下载Selenium WebDriver并设置

步骤1:访问Selenium官网--https://www.selenium.dev/downloads/

步骤2:针对列表中的Selenium Client和WebDriver Language Bindings,请下载与自己语言首选项相对应的客户端库。本文以Java客户端为例。

步骤3:将下载的文件解压缩到某个目标文件夹中,以便后续使用。

 

步骤4:找到对应的目标文件夹。

步骤5:打开文件夹后,您将能够看到一些jar文件,一个libs文件夹(其中包含了更多的jar文件)和一个Changelog文件。

步骤6:为浏览器下载驱动程序。下面是三大主流浏览器驱动的下载链接:

您也可以通过参考Selenium网站上的“浏览器”部分,以下载更多浏览器驱动。

步骤7:解压已下载的驱动,将其存放在到方便的位置。

为Selenium WebDriver配置Eclipse

步骤1:启动eclipse.exe。

步骤2:手动选择工作区,或保持默认位置,然后单击“确定”。

步骤3:根据向导,依次点击“文件”->“新建”->“Java项目”,以创建一个新的项目。

 

步骤4:点击“下一步”,为项目命名,并单击完成。

步骤5:在新建的项目上右键,选择“新建”->“包”。

步骤6:在“新建Java包”对话框中输入包的名称,然后单击“完成”。

步骤7:右击新建包的名称,依次选择“新建”->“类”。

步骤8:在“新建Java类”对话框中,输入类的名称,在方法根(method stub)处,勾选“public static void main(String [] args)”,然后单击“完成”。

您的资源管理器看上去会与下图类似:

步骤9:在当前项目上右击,依次选择“构建路径”->“配置构建路径”。

单击“添加外部JAR”,然后定位到已下载保存的JAR文件。

步骤11:依次选择Selenium Client文件夹中的两个jar,以及libs文件夹里的jar文件。

步骤12:添加完毕后,您将在Libraries下看到所有的jar文件:

步骤13:依次点击“应用”->“OK”。此时,您将在“包管理器”下看到所有的“引用库”。

至此,我们已成功地在Eclipse Project中配置了Selenium WebDriver。

使用Selenium WebDriver执行第一个测试脚本

我们将编写一个简单的测试程序,该程序将启动Firefox浏览器,并打开“www.google.com”,在将浏览器最大化窗口后,最后退出会话。我们在代码中将写入前文在配置Selenium时创建的测试类。具体代码段如下:

Java 

  1. package firstPackage; 
  2.  
  3. import org.openqa.selenium.WebDriver; 
  4.  
  5. import org.openqa.selenium.firefox.FirefoxDriver; 
  6.  
  7. public class MyFirstTestClass { 
  8.  
  9.   
  10.  
  11.     public static void main(String[] args) throws InterruptedException { 
  12.  
  13.   
  14.  
  15. System.setProperty("webdriver.gecko.driver","E:\\Softwares\\geckodriver.exe”);           
  16.  
  17. WebDriver driver = new FirefoxDriver(); 
  18.  
  19.             driver.get("https://www.google.com/"); 
  20.  
  21.             driver.manage().window().maximize(); 
  22.  
  23.             Thread.sleep(5000); 
  24.  
  25.             driver.quit(); 
  26.  
  27.     } 
  28.  

 代码说明:

  1. System.setProperty(“webdriver.gecko.driver”,”E:\\Softwares\\geckodriver.exe”) 

这行代码用于设置浏览器的属性,即:将系统的属性设置为给定值。WebDriver代码将引用存储在第二个参数中所在路径里的驱动,并实例化Firefox驱动。注意,您需要提供的是存储驱动程序的系统路径。

  1. WebDriver driver = new FirefoxDriver() 

我们通过引用WebDriver接口,来创建Firefox类的对象(Object)。也就是说,我们可以在Firefox实例中实现WebDriver的方法。

  1. driver.get(“https://www.google.com/”) 

WebDriver的get()方法可以被用于打开URL,并等待页面的完全加载。

  1. driver.manage().window().maximize() 

maximum()方法可实现浏览器窗口的最大化。

  1. Thread.sleep(5000) 

为了使实例在网络连接速度过慢的情况下不会超时,我们可以通过休眠,使线程的执行暂停指定的毫秒数(括号中的数值)。 

  1. driver.quit() 

quit()方法用于终止WebDriver会话,并关闭由WebDriver所启动的浏览器窗口。

在执行了上述代码后,您将会在Eclipse Console窗口中看到如下执行日志。而在执行测试时,您也会观察到浏览器窗口随着Google的启动,并在随后自行关闭。

至此,您已经成功地执行了第一个Selenium WebDriver测试脚本。当然,您也可以试着使用其他浏览器驱动来编写不同的测试脚本。

Selenium WebDriver的局限性

如前所述,Selenium WebDriver在取代RC方面有着诸多优势。不过客观地说,它也存在着如下局限性:

i. Selenium WebDriver不支持基于Windows的应用程序自动化。

ii. Selenium WebDriver无法自动执行图像测试、提供验证码或OTP功能。

iii. Selenium WebDriver没有任何内置的报告。

iv. 由于它是开源的,因此您必须依靠社区论坛,来解决各种技术问题。

v. 在使用Selenium WebDriver自动化之前,您需要至少具有一门编程语言的基础知识。

vi. Selenium中没有用于“测试管理”的测试集成工具。

vii. Selenium WebDriver不支持并行测试。这对于大型且复杂的测试套件而言,是一种严重的不足。

值得一提的是,如果你的确希望用Selenium来执行并行测试的话,请试用Selenium的另一个组件--Selenium Grid。它通过从集线器服务器,向远程Web浏览器实例发送命令,来实现并行测试。因此,在实际进行自动化测试时,我们可以用它来实现在多种浏览器、操作系统、以及设备上测试自动化脚本。

原Most Practical Selenium WebDriver Tutorial With Examples ,作者:Ritesh Shetty

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

 

来源:51CTO内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯