命令行运行器
现在,您可以在任何浏览器上并行运行所有 Selenium IDE 测试,无需编写任何代码。
只需安装 Selenium IDE 命令行运行器,获取必要的浏览器驱动程序(如果要在本地运行测试),并使用所需的选项从命令提示符启动运行器即可。
先决条件
命令行运行器需要以下依赖项才能工作
node
(Node.js 编程语言) 版本8
或10
npm
(NodeJS 包管理器),它通常与node
一起安装selenium-side-runner
(Selenium IDE 命令行运行器)- 以及我们想要使用的浏览器驱动程序(下一节将详细介绍)
> brew install node
> npm install -g selenium-side-runner
注意:您的系统配置可能与上面示例中使用的配置不同(例如,MacOS 上的 Homebrew)。如果是这样,请参阅Node 安装文档以了解软件包管理器,或直接从 Node 下载页面下载适用于您操作系统的 Node 安装程序。
安装浏览器驱动程序
如果您想在本地运行测试,则每个浏览器都需要进行一些额外的设置。
Selenium 通过一个名为浏览器驱动程序的小型二进制应用程序与每个浏览器进行通信。每个浏览器都有自己的驱动程序,您可以手动下载并添加到系统路径,或者使用包管理器安装最新版本的浏览器驱动程序(推荐)。
您还需要在计算机上安装该浏览器。
Chrome
对于 Chrome,您需要 ChromeDriver。
> npm install -g chromedriver
Edge
对于 Microsoft Edge,您需要在 Windows 上运行,还需要 EdgeDriver。
> npm install -g edgedriver
Firefox
对于 Firefox,您需要 geckodriver。
> npm install -g geckodriver
Internet Explorer
对于 Internet Explorer,您需要在 Windows 上运行,还需要 IEDriver。
> npm install -g iedriver
IEDriver 需要进行一些额外的设置才能工作。详细信息请参见此处。
Safari
对于 Safari,您需要 SafariDriver。
它随最新版本的 Safari 一起提供。您只需执行几个步骤即可在您的计算机上启用它。有关详细信息,请参阅SafariDriver 文档的这一部分。
启动运行器
安装完所有内容后,运行测试只需从命令行调用 selenium-side-runner
,后跟先前保存的项目文件的路径(请参阅入门指南)。
> selenium-side-runner /path/to/your-project.side
注意:如果您有多个 .side
文件,可以使用通配符(例如,/path/to/*.side
)。
当您运行此命令时,它将在多个浏览器窗口中并行启动测试,分布在 n
个进程中(其中 n
是您机器上可用的 CPU 核心数)。
进程数可以在运行时通过您可以提供的各种参数进行配置(以及其他内容)。
注意:并行执行在套件级别自动发生。如果您希望在套件中并行执行测试,则需要更改一个设置。有关详细信息,请参阅套件中的测试并行化。
运行时配置
使用运行器,您可以在运行时传入不同的配置参数。
在本地不同的浏览器上运行
功能的最常见用途是指定不同的浏览器用于本地测试执行。
selenium-side-runner -c "browserName=chrome"
selenium-side-runner -c "browserName='internet explorer'"
selenium-side-runner -c "browserName=edge"
selenium-side-runner -c "browserName=firefox"
selenium-side-runner -c "browserName=safari"
注意:在本地运行测试时,每个浏览器都需要进行一些设置。有关详细信息,请参阅安装浏览器驱动程序。
在 Selenium Grid 上运行
要在 Grid 上运行测试(例如,您自己的 Grid 或像 Sauce Labs 这样的托管提供商),您可以指定它以及不同的功能。
selenium-side-runner --server http://localhost:4444/wd/hub -c "browserName='internet explorer' version='11.0' platform='Windows 8.1'"
--server
指定 Grid 的 URL,-c
是您希望 Grid 使用的功能。
您可以在此处查看可用功能的完整列表。
指定并行进程的数量
在 Grid 上运行时,您可能需要控制正在运行的并行会话的数量。为此,您可以使用 -w n
命令标志(其中 n
是您想要的进程数量)。
selenium-side-runner -w 10 --server http://localhost:4444/wd/hub
运行器会自动将工作进程的数量设置为与您的计算机上可用的 CPU 核心数相同。在大多数情况下,这是最佳选择。
Chrome 特有的功能
如果您的机器上 Chrome 安装在非标准位置,您可以指定路径,以便 ChromeDriver 知道在哪里查找。
selenium-side-runner -c "goog:chromeOptions.binary='/path/to/non-standard/Chrome/install'"
使用 Chrome 特有的功能,您还可以以无头模式运行测试。
selenium-side-runner -c "goog:chromeOptions.args=[disable-infobars, headless]"
触手可及的框架
运行器还提供了其他开箱即用的便利功能。您希望在传统的测试自动化框架中提供的功能。
更改基本 URL
通过指定不同的基本 URL 的能力,您可以轻松地将测试指向不同的环境(例如,本地开发、测试、预发布、生产)。
selenium-side-runner --base-url https://localhost
筛选测试
您还可以选择使用 --filter target
命令标志运行目标测试子集(其中 target
是正则表达式值)。只有包含给定搜索条件的测试名称才会被运行。
selenium-side-runner --filter smoke
将测试结果输出到文件
如果您需要将测试结果导出到文件(例如,作为 CI 流程的一部分运行时),您可以使用 --output-directory
和 --output-format
标志的组合。
--output-directory
定义将测试结果文件放置在哪里。它可以采用绝对路径或相对路径。
--output-format
定义测试结果文件使用的格式。它可以是 jest
(例如,JSON)或 junit
(例如,XML)。默认格式为 jest
(例如,如果您不指定类型)。
selenium-side-runner --output-directory=results
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=jest
# Outputs results in `jest` frormat in `./results/projectName.json'
selenium-side-runner --output-directory=results --output-format=junit
# Outputs results in `junit` frormat in `./results/projectName.xml'
指定默认配置
与其记住您需要的所有命令行参数(这可能会变得笨拙),不如将运行时参数存储在配置文件中。
您可以使用两种类型的配置文件。
选项 1
在您将要运行测试的目录中创建一个 .side.yml
文件。运行器将自动拾取它。这是文件内容的一个示例。
capabilities:
browserName: "firefox"
baseUrl: "https://www.seleniumhq.org"
server: "http://localhost:4444/wd/hub"
如果您想忽略该文件而改用命令行参数,请在运行时使用 --no-sideyml
以及您的其他命令。
选项 2
除了使用 .side.yml
文件,您还可以在 YAML 文件中指定运行时参数,并选择名称和位置,然后在运行测试时指定其位置。
selenium-side-runner --config-file "/path/to/your/config.yaml"
注意:当使用 --config-file
标志时,.side.yml
将被忽略。
Selenium IDE 配置
套件中的测试并行化
开箱即用,运行器并行执行套件,但套件中的测试是按顺序执行的。
要在给定套件中并行运行测试,您需要在 Selenium IDE 中更新该套件的设置。
- 切换到 Selenium IDE 中的
测试套件
视图 - 单击您要配置的套件名称旁边的下拉菜单,然后单击
设置
- 单击
并行运行
的复选框 - 单击
提交
- 保存您的 Selenium IDE 项目文件
要配置多个套件以这种方式运行,请在每个套件中重复步骤 1-4。完成后务必保存项目文件。
高级选项
其他参数
Selenium IDE 的插件可以指定自己独特的运行时参数。您可以通过 --params
标志来利用它们。
此选项接受各种选项的字符串(类似于您指定功能的方式)。
基本用法
您指定参数的名称及其值。执行此操作最基本的方法是指定一个字符串值。
selenium-side-runner --params "a='example-value'"
嵌套参数
参数也可以使用点符号进行嵌套。
selenium-side-runner --params "a.b='another example-value'"
数组值
除了字符串,您还可以指定字母数字值的数组。
selenium-side-runner --params "a.b.c=[1,2,3]"
多个参数
--params
只能调用一次,但您可以通过空格分隔来指定多个参数。
selenium-side-runner --params "a='example-value' a.b='another example-value' a.b.c=[1,2,3]"
使用代理服务器
您可以使用运行器中的以下选项将代理功能传递给浏览器。
直接代理
此选项配置 WebDriver 以绕过所有浏览器代理。
从命令行
> selenium-side-runner --proxy-type=direct
.side.yaml
中
在 proxyType: direct
手动代理
手动配置浏览器代理。
从命令行
selenium-side-runner --proxy-type=manual --proxy-options="http=localhost:434 bypass=[http://localhost:434, http://localhost:8080]"
.side.yaml
中
在 proxyType: manual
proxyOptions:
http: http://localhost:434
https: http://localhost:434
ftp: http://localhost:434
bypass:
- http://localhost:8080
- http://host:434
- http://somethingelse:32
PAC 代理
配置 WebDriver 以使用给定 URL 的 PAC 文件设置浏览器代理。
从命令行
selenium-side-runner --proxy-type=pac --proxy-options="http://localhost/pac"
.side.yaml
中
在 proxyType: pac
proxyOptions: http://localhost/pac
SOCKS 代理
为 SOCKS 代理创建代理配置。
从命令行
selenium-side-runner --proxy-type=socks --proxy-options="socksProxy=localhost:434 socksVersion=5"
.side.yaml
中
在 proxyType: socks
proxyOptions:
socksProxy: localhost:434
socksVersion: 5
系统代理
配置 WebDriver 以使用当前系统的代理。
从命令行
selenium-side-runner --proxy-type=system
<
proxyType: system
代码导出
如果您正在尝试学习如何将录制的测试转换为 WebDriver 代码,或者您想将录制的测试集成到现有的自定义测试框架中,那么您需要的就是代码导出,现在它已可用于选定的语言。您可以在此处了解更多信息!