Selenium IDE使用指南二(命令行运行器)
- Selenium IDE 使用指南一(爬虫脚本录制器)
- Selenium IDE 使用指南二(命令行运行器)
- Selenium IDE 使用指南三(控制流)
- Selenium IDE 使用指南四(代码导出)
- Selenium IDE 使用指南五(常见问题)
- Selenium IDE 使用指南六(指令列表)
- Selenium IDE 使用指南七(参数定义)
现在,您可以在任何浏览器上并行运行所有 Selenium IDE 测试,甚至可以在 Grid 上运行,而无需编写任何代码。
只需安装 Selenium IDE 命令行运行器(Command Line Runner),获取必要的浏览器驱动程序(如果在本地运行测试),然后从命令提示符启动带有所需选项的运行器即可。

先决条件
要使命令行运行器正常运行,需要以下依赖项:
node(Node.js 运行时环境):版本8或10npm(Node.js 包管理器):通常与node一同安装selenium-side-runner(Selenium IDE 命令行运行器)- 所要使用的浏览器驱动程序(详见下一节)
安装示例:
brew install node
npm install -g selenium-side-runner注意:您的系统配置可能与上面的示例不同(例如,macOS 上的 Homebrew)。如果是这样,请参阅 Node 包管理器安装文档,或直接从 Node 下载页面 下载适用于您操作系统的安装程序。
安装浏览器驱动程序
如果要在本地运行测试,每个浏览器都需要一些额外的设置。
Selenium 通过一个称为“浏览器驱动程序”的小型二进制应用程序与每个浏览器进行通信。每个浏览器都有对应的驱动程序,您可以手动下载并添加到系统路径,也可以使用包管理器安装最新版本的浏览器驱动程序(推荐)。
您还需要在计算机上安装对应的浏览器本身。
Chrome
对于 Chrome,您需要 ChromeDriver。
npm install -g chromedriverEdge
对于 Microsoft Edge,您需要在 Windows 上运行,并且还需要 EdgeDriver。
npm install -g edgedriverFirefox
对于 Firefox,您需要 geckodriver。
npm install -g geckodriverInternet 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 内核的数量)。
进程数可以在运行时通过提供的各种参数进行配置(除其他外)。
注意:并行执行在套件(Suite)级别自动发生。如果要并行执行套件中的测试,则需要更改一个设置。有关详细信息,请参见 套件中的测试并行化。
运行时配置
使用运行器,您可以在运行时传递不同的配置参数。
在本地不同的浏览器上运行
此功能最常见的用途是为本地测试执行指定其他浏览器。
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 的托管提供商)上运行测试,可以指定它以及其他功能(Capabilities)。
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
# 在 ./results/projectName.json 输出 jest 格式的结果
selenium-side-runner --output-directory=results --output-format=jest
# 在 ./results/projectName.json 输出 jest 格式的结果
selenium-side-runner --output-directory=results --output-format=junit
# 在 ./results/projectName.xml 输出 junit 格式的结果指定默认配置
您不必记住所有需要的命令行参数(这些参数可能很笨拙),而是可以将运行时参数存储在配置文件中。
您可以使用两种配置文件。
选项 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 中的
Test Suites视图。 - 点击您要配置的套件名称旁边的下拉菜单,然后点击
Settings。 - 单击复选框
Run in parallel。 - 请点击
Submit。 - 保存您的 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]"使用代理服务器
您可以使用运行器中的以下选项将代理功能传递给浏览器。
直接代理 (Direct Proxy)
此选项将 WebDriver 配置为绕过所有浏览器代理。
在命令行中:
selenium-side-runner --proxy-type=direct在 .side.yaml 中:
proxyType: direct手动代理 (Manual Proxy)
手动配置浏览器代理。
在命令行中:
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:32PAC 代理 (PAC Proxy)
配置 WebDriver 以使用给定 URL 处的 PAC 文件设置浏览器代理。
在命令行中:
selenium-side-runner --proxy-type=pac --proxy-options="http://localhost/pac"在 .side.yaml 中:
proxyType: pac
proxyOptions: http://localhost/pacSOCKS 代理
为 SOCKS 代理创建代理配置。
在命令行中:
selenium-side-runner --proxy-type=socks --proxy-options="socksProxy=localhost:434 socksVersion=5"在 .side.yaml 中:
proxyType: socks
proxyOptions:
socksProxy: localhost:434
socksVersion: 5系统代理 (System Proxy)
配置 WebDriver 以使用当前系统的代理。
在命令行中:
selenium-side-runner --proxy-type=system在 .side.yaml 中:
proxyType: system代码导出
如果您想学习如何将记录的测试转换为 WebDriver 代码,或者想要将记录的测试集成到现有的自定义测试框架中,则需要的是代码导出,现在可用于某些语言。您可以 在此处了解更多信息!
说明:文中提到的 Node.js 版本(8 或 10)可能已过时,建议参考官方最新文档确认兼容性。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/selenium-ide-shi-yong-zhi-nan-er--ming-ling-xing-yun-xing-qi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。