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

Selenium 1 (又叫Selenium RC或Remote Control)在很长一段时间内,Selenium RC都是最主要的Selenium项目,直到WebDriver和Selenium合并而产生了最新且最强大的Selenium 2。Seleinum 1仍然被活跃地支持着(更多是维护),并且提供一些Selenium 2短时间内可能不会支持的特性,包括对多种语言的支持(Java、JavaScript、Ruby、PHP、Python、Perl和C#)和对大多数浏览器的支持。

Selenium 2 (又叫Selenium WebDriver)代表了这个项目未来的方向,也是最新被添加到Selenium工具集中的。这个全新的自动化工具提供了很多了不起的特性,包括更内聚和面向对象的API,并且解决了旧版本限制。Selenium和WebDriver的作者都赞同两者各具优势,而两者的合并使得这个自动化工具更加强健。Selenium 2.0正是于此的产品。它支持WebDriver API及其底层技术,同时也在WebDriver API底下通过Selenium 1技术为移植测试代码提供极大的灵活性。此外,为了向后兼容,Selenium 2仍然使用Selenium 1的Selenium RC接口。

你可以到下载Selenium的各个稳定版本。

在Vue项目中如果使用vue-cli,那么Nightwatch将不需要进行任何的附加配置,否则你需要在命令行内安装Selenium的包装类库:

$ npm i selenium-server -D

Nightwatch能引导Selenium的启动,实际上我们并没有必要去修改Selenium服务器的默认运行配置,在nightwatch.conf.js配置文件中只需要声明Selenium服务器的二进制执行 文件的具体路径即可,这个可以从selenium-server包提供的Selenium包装对象的path属性中获取,而无须
将本机的物理路径写死到配置文件内。

var seleniumServer = require('selenium-server'); module.exports= { "selenium": { "start_process": true, "server_path": seleniumServer.path, "port": 4444, "cli_args": { "webdriver.chrome.driver": require('chromedriver').path } }, // ... 省略 }

以下是Selenium的详细配置项说明:

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

cli_args 的配置

● webdriver.firefox.profile:Selenium默认为每个会话创建一个独立的Firefox配置方案。如果你希望使用新的驱动配置可以在此进行声明。

● webdriver.chrome.driver:Nightwatch同样可以使用Chrome浏览器加载测试,当然你要先下载一个ChromeDriver的二进制运行库对此进行支持。此配置项用于指明ChromeDriver的安装位置。除此之外,还需要在test_settings配置内使用desiredCapabilities对象为Chrome建立配置方案。

● webdriver.ie.driver:Nightwatch也支持IE,其作用与用法与Chrome相同,此处则不过多赘述。

 测试环境配置

test_settings内的项目将应用于所有的测试实例,在E2E测试中我们可以通过Nightwatch提供的默认实例对象browser获取这些配置值,vue-cli为我们创建了default、firefox和chrome三个环境配置项,default配置是应用于所有环境的基础配置选项,其他的配置项会自动覆盖与default相同的配置值。

firefox和chrome这两个配置项是对两种浏览器的驱动进行描述和配置。对于其他语言或框架而言它们也是常客,但由于性能太低,在实战中通常只是个摆设,下文中我将会介绍一种实战效率更高的无头浏览器PhantomJS,对其取而代之。

不要被vue-cli创建默认配置所迷惑,test_settings并不单单只是对浏览器的一些基本运行参数的配置,它正确的用法是对E2E测试环境的配置。单元测试只能运行于开发环境内,而E2E却可以运行于本地环境与网络环境,更准确地说是开发环境与生产环境。所以这个配置项可以用以下的方式进行设置:

"test_settings": { "default": { "selenium_port": 4444, "selenium_host": "localhost", "silent": true, launch_url:"http://localhost:" + (process.env.PORT || config.dev.port), "globals": {} }, "dev": { "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "production": { "launch_url":"http://www.your-domain.com" "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } }

虽然与原有的配置只是在用词上做了一点点改变,但用词的改变将会彻底地改变我们对其的认知与思路!

下表是测试环境配置项的详细说明:

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

 执行 E2E 测试

vue-cli已经在package.json中配置了运行测试的指令:

$ npm run e2e

这个指令是默认启用Chrome运行环境的,如果指定运行环境可使用--env选项:

$ npm run e2e --env

使用无头浏览器 PhantomJS

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

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