简介
在前端自动化测试中,selenium 无疑是一个非常重要的工具。而 selenium-launcher 是一个 npm 包,它提供了许多便捷的方法,用于在不同浏览器上启动 selenium 服务。
本文档将详细介绍 selenium-launcher 的使用方法,包括 npm 包的安装、如何使用 selenium-launcher 启动 Chrome 和 Firefox 浏览器,以及如何在不同的环境下使用其它浏览器。
安装
通过 npm 安装 selenium-launcher:
$ npm install selenium-launcher
安装完毕后,在需要使用的代码中引入它:
const selenium = require('selenium-launcher');
启动浏览器
启动 Chrome 浏览器
要启动 Chrome 浏览器,只需要使用下面的代码:
selenium.start({ drivers: {chrome: webdriver}, chrome: {}, }).then((seleniumInstance) => { // ... });
这里的 webdriver
参数是通过 chromedriver 包来安装的。如果你没有安装过 chromedriver,可以通过以下命令来安装:
$ npm install chromedriver
在这个例子中,我们使用了一个全局变量 webdriver
,它是一个由 chromedriver
包提供的对象。
当然,你也可以显式地引入:
const chromeDriver = require('chromedriver'); selenium.start({ drivers: {chrome: chromeDriver}, chrome: {}, }).then((seleniumInstance) => { // ... });
启动 Firefox 浏览器
要启动 Firefox 浏览器,只需要使用下面的代码:
selenium.start({ drivers: {firefox: webdriver}, firefox: {}, }).then((seleniumInstance) => { // ... });
同样的,在这里,webdriver
参数是通过 geckodriver 包来安装的。如果你没有安装过 geckodriver,可以通过以下命令来安装:
$ npm install geckodriver
如果你没有使用过 selenium-launcher,这两个例子可能看起来有些怪异。正常情况下,我们通常会使用 WebdriverIO 或 Nightwatch 这类的框架来启动浏览器。不过,由于 selenium-launcher 是一个独立的 npm 包,所以我们需要显式地指定要使用的浏览器和浏览驱动器。
不同环境和浏览器的支持
奇怪的 Firefox 版本问题
在一些情况下,可能需要安装特定版本的 Firefox,以便于正常地使用 Selenium。
例如,在某些 macOs 版本上,如果你安装了最新版的 Firefox,你将会遇到以下错误:
SessionNotCreatedError: session not created exception from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData":{"frameId":"8230.1","isDefault":true},"id":1,"name":"","origin":"://"}
为了解决这个问题,你需要安装 48 版本的 Firefox:
$ brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/707efabc6b67c95b9a3dc715f74be0d858e95332/Casks/firefox.rb
使用其它浏览器
你也可以在 selenium.start
方法中添加其它浏览器的配置信息。
例如,下面的代码可以用于启动 Safari 浏览器:
selenium.start({ drivers: {safari: webdriver}, safari: {}, }).then((seleniumInstance) => { // ... });
如果你需要在分布式环境中运行测试,你可以使用 Saucelabs 或 Browserstack 这些提供了分布式浏览器测试的服务。
示例代码
下面是一个完整的例子,该例子使用了 selenium-launcher 来启动 Chrome 浏览器,然后使用 WebdriverIO 来测试网站中的元素。
首先,需要安装以下 npm 包:
$ npm install selenium-launcher chromedriver webdriverio
然后,以下是完整的测试代码:
-- -------------------- ---- ------- ----- ---------------- - ----------------------------- ----- ----------- - ----------------------- ----- ------------ - ------------------------ ----- ------------ - - -------- -------- -------------- ------- --- -- ------------------------------------------------------ -- - ----- ------- - -------------------- ----- ---------------------- --------- ---------- -------------------- ------------- ---------- ----- ---------- --- ------ -------------- ----------------------------- -------------------- ------------ ------------ - --------- - ------- - ------ - ----------------------------------- ------------------------ -- - ------------------ ---- ----------- ------ -------------- -- -------- -- - ------------------------ --- ---展开代码
总的来说,我们通过 selenium-launcher
包来启动 Chrome 浏览器,然后通过 WebdriverIO
来控制浏览器,执行一些简单的操作,最后关闭浏览器和 selenium 服务。
尾声
通过这篇文章,你应该已经掌握了 selenium-launcher 包的简单用法了。这里提供了一些很好的例子,用于在 Chrome 和 Firefox 浏览器上进行测试,同时在需要时也可以使用其它浏览器。当然,如果你在实践过程中遇到任何问题,欢迎在下面留言,我们将为你解答。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5efd8018403f2923b035bb81