cli 脚手架基于Nightwatch的端到端测试环境的过程(2)

.
└── test
      └── e2e
            ├── custom-assertions     // 自定义断言
            │    └── elementCount.js
            ├── page-objects          // 页面对象文件夹
            ├── reports               // 输出报表文件夹
            ├── screenshots           // 自动截屏
            ├── nightwatch.conf.js    // nightwatch 运行配置
            ├── runner.js             // 运行器
            └── specs                 // 测试文件
                  └── test.spec.js

以上是vue-cli为我们自动创建的Nightwatch工程结构,specs是测试文件存放的文件夹,nightwatch.conf.js是Nightwatch的运行配置文件。其他的目录将会在具体的章节逐一地进行讲述。

基本配置

Nightwatch的配置项都集中在nightwatch.conf.js中,其实这个配置也可以是一个JSON格式,采用JSON格式只需要简单地对配置项写入一些常量即可。但使用模块的方式进行配置可以执行一些额外的配置代码,这样则显得更为灵活。以下是我调整过的nightwatch.conf.js文件内容:

require('babel-register'); var config = require('../../config'); var seleniumServer = require('selenium-server'); var phantomjs = require('phantomjs-prebuilt'); module.exports = { "src_folders": ["test/e2e/specs"], "output_folder": "test/e2e/reports", "custom_assertions_path": ["test/e2e/custom-assertions"], "page_objects_path": "test/e2e/page-objects", "selenium": { "start_process": true, "server_path": seleniumServer.path, "port": 4444, "cli_args": { "webdriver.chrome.driver": require('chromedriver').path } }, "test_settings": { "default": { "selenium_port": 4444, "selenium_host": "localhost", "silent": true, launch_url:"http://localhost:" + (process.env.PORT || config.dev.port), "globals": { } }, "chrome": { "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "firefox": { "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }

Nightwatch的配置分为以下三类:

● 基本配置;

● Selenium配置;

● 测试环境配置。

在配置模块中的所有根元素配置项都属于基本配置,用于控制Nightwatch的全局性运行的需要。下表为Nightwatch的基本配置项的详细说明。

cli 脚手架基于Nightwatch的端到端测试环境的过程

Selenium 配置

Selenium是一组软件工具集,每一个工具都有不同的方法来支持测试自动化。大多数使用Selenium的QA工程师只关注一两个最能满足他们项目需求的工具。然而,学习所有的工具你将有更多选择来解决不同类型的测试自动化问题。这一整套工具具备丰富的测试功能,很好地契合了测试各种类型的网站应用的需要。这些操作非常灵活,有多种选择来定位UI元素,同时将预期的测试结果和实际的行为进行比较。Selenium一个最关键的特性是支持在多浏览器平台上进行测试。

Selenium诞生于2004年,当在ThoughtWorks工作的Jason Huggins在测试一个内部应 用时,作为一个聪明的家伙,他意识到相对于每次改动都需要手工进行测试,他的时间应该用得更有价值。他开发了一个可以驱动页面进行交互的JavaScript库,能让多浏览器自动返回测试结果。那个库最终变成了Selenium的核心,它是Selenium RC(远程控制)和Selenium IDE所有功能的基础。Selenium RC是开拓性的,因为没有其他产品能让你使用自己喜欢的语言来控制浏览器。

Selenium是一个庞大的工具,所以它也有自己的缺点。由于它使用了基于JavaScript的自动化引擎,而浏览器对JavaScript又有很多安全限制,有些事情就难以实现。更糟糕的是,网站应用正变得越来越强大,它们使用了新浏览器提供的各种特性,都使得这些限制让人痛苦不堪。在2006年,一名Google的工程师Simon Stewart开始基于这个项目进行开发,这个项目被命名为WebDriver。此时,Google早已是Selenium的重度用户,但是测试工程师们不得不绕过它的限制。Simon需要一款能通过浏览器和操作系统的本地方法直接和浏览器进行通话的测试工具,来解决JavaScript环境沙箱的问题。WebDriver项目的目标就是要解决Selenium的痛点。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/62714f18e2ec5be970d0b5711dd26c25.html