用Selenium和JavaScript启动测试自动化的快速指南

471 阅读10分钟

用Selenium和JavaScript启动测试自动化的快速指南

发布者:Ramit DhamijaRamit Dhamija inEnterprise Java August 21st, 2021 0 Views

测试是软件开发生命周期(SDLC)的一个重要阶段,其主要议程是发现最大的错误,并为成功发布产品挖掘出缺失的需求。为了提高产品测试覆盖率,并以最快的方式发布无缺陷的产品,重要的是将功能自动化测试纳入其中,以确保产品的功能符合预期,并为终端用户提供完美的体验。

如今,我们有很多自动化测试工具和框架来实现网络操作的自动化。然而,Selenium是最受欢迎和可行的网络自动化框架之一。

Selenium是一个开源的测试框架,用于通过应用程序的前端实现端到端的自动化测试过程。它被进一步分类为 。

  • Selenium IDE。 Selenium集成开发环境(IDE)主要是一个记录和回放工具,人们可以用它来实现网络行动的自动化。它很容易使用,只需在浏览器上添加一个扩展就可以配置了。它是一个基于GUI的应用程序,用于记录与网站的交互,并在IDE中创建一个测试套件。
  • Selenium WebDriver: 是一个远程控制界面,提供对用户代理的控制。Selenium WebDriver是一个浏览器自动化框架,它接受来自语言绑定的命令并将其转发给浏览器。它通过与浏览器直接通信来控制浏览器,并通过一个特定的浏览器驱动程序来实现。
  • Selenium Grid: 是一种趋势工具,用于针对不同浏览器、浏览器版本和不同操作系统创建的不同环境并行运行多个自动化测试。Selenium Grid基本上是集线器和节点的组合,其中集线器是Selenium独立的集线器,节点是连接到一个集线器的不同浏览器。

Selenium支持许多脚本语言,如Java、Ruby、C#、Python、JavaScript等。JavaScript是一种高水平、多范式的编程语言,在客户端和服务器端都使用,允许你将静态网页转化为交互式网页。我们将研究Selenium Webdriver如何与Javascript一起用于Web应用的自动测试

为什么选择JavaScript来实现基于Selenium的UI自动化?

JavaScript主要用于开发Web应用,因为很多Web应用都是基于MEAN栈(MongoDB、Express.js、AngularJS和Node.js)或MERN栈(MongoDB、ExpressJS、ReactJS、Node.js)。根据Stack Overflow的调查,JavaScript是世界上使用最多的编程语言。

由于它是许多网络开发受众的首选,因此,用Selenium整合它来提高测试自动化是一个重要的想法。以下几点强调了为什么要用Selenium选择JavaScript。

  • JavaScript是一种完善的、结构化的模式语言,它使自动化脚本更加紧凑和易于理解。
  • 基于Selenium的UI自动化与Javascript的结合对许多组织来说是一个很好的组合,因为他们可以坚持使用一种技术进行网络开发和测试自动化。
  • 这些技术都是开源的,可以免费使用,并且为了更好的发展而逐渐加强。
  • 它被先进的安全性包裹着,使用起来相对安全。
  • JavaScript是一种脚本语言,它提供了巨大的优势,因为它可以直接控制服务器或客户端的脚本。

排名前四的JavaScript测试框架

1.JEST

JEST是Facebook开发的一个自动化测试框架,用于测试使用React JS开发的应用程序的JavaScript代码。它被认为是一个非常好的文档和快速执行的JavaScript测试框架。使用JEST的主要优势是,可以使用行为驱动的开发方法来编写测试用例,并且该框架还可以通过捕获屏幕截图来执行可视化回归测试。

2.守夜人

Nightwatch是一个由node.js驱动的自动化测试框架。它通过利用W3C Selenium WebDriver API来促进网络应用的端到端测试。它可以用于联合测试和集成测试。它有一个内置的命令行测试运行器,用于测试执行的重试和隐式等待。Nightwatch框架的语法非常简洁,易于理解,有助于测试人员编写更有效的测试案例。

3.Protractor

正如我们上面所研究的,JEST主要用于基于React JS的应用程序,同样地,对于基于Angular JS的Web应用程序,我们有Protractor。它通常用于Angular应用程序的端到端测试,并支持与Selenium定位器相当的额外定位器,如:中继器、模型、绑定和其他更多。设置针对不同环境的测试用例的并行执行是非常容易的。另外,使用Protractor,自动截图和比较也更加容易。

4.摩卡

自2011年以来,Mocha JS一直是一个流行的自动化测试框架。它是一个开源的测试框架,主要被JavaScript开发人员用于单元测试。它在Node.js上运行,为前端和后端测试提供兼容性。它被广泛用于第三方断言、嘲弄和窥探。它支持node.js调试器,使错误识别更容易。Mocha JS框架也因其准确的报告和容易将异常情况与相关的测试案例进行映射而闻名。

用JavaScript设置Selenium的先决条件

在使用Selenium和JavaScript执行测试自动化的过程中,有一些先决条件需要检查。让我们看一下。

**第一步:**安装Node.js npm

Node.js与npm即Node包管理器捆绑在一起。你可以从Node.js官方网站下载。运行以下命令来验证npm和node.js的安装情况。

  • npm -v
  • node -v

第二步: 安装Selenium WebDriver

Npm是内置的软件包管理器,将进一步用于安装Selenium for JS。

以下是安装Selenium WebDriver的命令(-save用于创建一个新的软件包,该软件包将被保存到项目的package.json文件)。

  • npm install -save selenium-webdriver

你还需要下载Chrome、Firefox或其他任何你想执行自动测试的特定浏览器的驱动程序,同样可以从npm js网站下载。强烈建议将浏览器驱动程序的路径添加到系统PATH中,这样Selenium就可以直接用这些可执行文件启动浏览器。

第3步: 安装IDE

为了实施,你可以从下面安装任何你选择的JS的IDE。

用Selenium和JavaScript编写我们的第一个网络自动化测试

一旦上面提到的所有步骤都完成了,配置设置也成功完成,我们就可以开始用JavaScript编写我们的第一个Selenium自动化测试了。

我们的测试场景如下。

  1. 导航到pCloudy官方网站
  2. 获取主页的标题
  3. 验证主页标题,以验证是否登陆了pcloudy网站
  4. 按照测试案例的要求打印日志,通过或失败

first_test.js

var webdriver = require('selenium-webdriver');

const driver = new webdriver.Builder()
    .forBrowser('chrome')
    .build();


driver.get('http:/www.pCloudy.com').then(function(){
    driver.getTitle().then(title=>{
    
        if(title.localeCompare("Mobile App Testing, Continuous Testing Cloud, Mobile Testing Tools | pCloudy")){
            console.log("Test Passed!")
        }else{
            console.log("Test Failed!")
        }
    })
 });

driver.quit();

代码演练。

首先,我们导入了selenium-webdriver 库,然后使用我们导入的库中的Builder方法创建了一个chromedriver的实例。

接下来,我们使用driver.get()导航到web应用程序的URL。然后,我们使用driver.getTitle()来获取我们应用程序主页的标题,并验证实际的标题是否与预期的标题一致。此外,日志将被打印在控制台,以显示测试案例的状态。在脚本的最后,我们已经退出了正在运行的浏览器会话。

要运行该测试,请执行命令。

node first_test.js

在pCloudy浏览器云上用JavaScript运行Selenium自动化测试

pCloudy是一个连续的云测试平台,它提供了一个由真实的Windows和Mac机器支持的巨大的浏览器组合。浏览器平台被命名为浏览器云,所有的远程机器都托管在云端,以便我们利用并在不同的环境,即不同的浏览器,多个浏览器版本和不同的操作系统上运行我们的自动化测试。

浏览器云还提供在这些云托管机器上对网络应用的手动测试。如果你的自动化测试在某个特定的环境中失败了,你可以在pCloudy的同一环境中手动运行该测试,只需在pCloudy的用户界面上选择相同的环境即可。

现在,让我们快速看看下面这个基于JavaScript的Selenium脚本,它将被用来在pCloudy浏览器云上进行跨浏览器测试。

const webdriver = require('selenium-webdriver');

var id = 'ramit.dhamija@gmail.com';
var accessKey = '5TfF4UcNRbN3JhucQ';

function verifyHomePageTitle() {

    const capabilities = {
	pCloudy_Username: id,
	apiKey: accessKey,
	clientName: id,
	email: id,
      os: 'Mac',
	osVersion: 'Catalina',
      browserName: 'safari',
      browserVersions: '14',
      pCloudy_EnableVideo: true,
      pCloudy_EnablePerformanceData: true,
      pCloudy_EnableDeviceLogs: true
       
    }

    const gridUrl =        'https://prod-browsercloud-in.pcloudy.com/seleniumcloud/wd/hub';

    const driver = new webdriver.Builder()
        .usingServer(gridUrl)
        .withCapabilities(capabilities)
        .build();
	
    driver.get('http:/www.pCloudy.com').then(function(){
    driver.getTitle().then(title=>{
    
        if(title.localeCompare("Mobile App Testing, Continuous Testing  Cloud, Mobile Testing 
        Tools | pCloudy")){
            console.log("Test Passed!")
        }else{
            console.log("Test Failed!")
        }
     })
  });
}
verifyHomePageTitle();

代码演练。

由于我们现在要在Selenium网格(即pCloudy浏览器云)上运行我们的自动化测试,所以必须添加所需的功能来设置测试环境。作为所需功能的一部分,我们已经传递了我们的pCloudy凭证(用户名和api key)以及真实测试机器的功能,如 "Mac "作为操作系统,"Catalina "作为操作系统版本,"safari "作为浏览器和 "14 "作为safari浏览器版本。此外,pCloudy还有一些内置的功能,我们用它们来捕捉测试视频记录、性能数据和日志。

为了在pCloudy的Selenium网格上运行我们的测试,我们定义了Selenium网格的URL。此外,我们已经为前面的脚本编写了相同的测试场景,如上所述。

pCloudy输出。

要查看你的测试的当前运行状态,你需要直接到pCloudy设备页面,点击报告->我的活动会话。

要查看到目前为止执行的所有测试,请直接到pCloudy设备页面,点击报告->所有报告。

要查看特定测试的日志和快照,请直接到pCloudy设备页面,点击报告->所有报告,并根据需要对特定会话名称的日志和屏幕截图采取行动。

结论

利用基于云的测试平台,如pCloudy,是实现测试工作自动化的关键。由于Selenium和JavaScript是几个最流行的自动化测试系统,使用它们在不同的设备上运行你的应用程序测试脚本,对于更快地发布高质量的应用程序变得更加重要。自动化一直是企业快速开发和测试应用程序的关键驱动力。我们希望这个指南能帮助你尽快开始你的应用程序的自动化之旅。测试愉快!

由我们JCG项目的合伙人Ramit Dhamija授权发表在Java Code Geeks上。点击这里查看原文。使用Selenium和JavaScript启动测试自动化的快速指南

Java Code Geeks的撰稿人所表达的观点属于他们自己。

测试 2021-08-21

汪峰