使用 Robot 框架的 Selenium 网格实现

Selenium grid Implementation with Robot framework

我想用机器人框架实现硒网格。我已经配置了 selenium grid hub 和两个节点,但是我不知道如何在此设置后触发并行测试用例执行,在哪里使用 python 语言和 selenium 2 在机器人框架中更新线程数和并行测试执行设置lib关键字?还有,hub url 在哪里分配触发执行?请为此提出可能的出路。 注意:我们在脚本中使用 selenium 2 lib 关键字,而不是 webdriver 关键字,因此我无法使用 'webdriver.remote' 关键字来创建集线器实例。 谢谢!

我的框架有:目录 -> 多个测试套件 -> 每个测试套件中的多个测试用例。 机器人测试用例的执行通过在 teamcity 上运行的 powershell 触发 通过使用命令 Python –m robot.run –i $tag 但是,它会触发测试用例的顺序执行,这需要大约 10 个小时才能完成执行。所以我正在寻找通过 运行 并行测试用例来减少总执行时间的解决方案。

I have no idea about how to trigger parallel test case execution

机器人没有对 运行 并行测试的任何内置支持,除了您可以同时 运行 机器人两次。如果你想 运行 针对两种不同的浏览器进行相同的测试,你将不得不 运行 机器人两次,每次测试使用一组不同的参数(即:浏览器规范) 运行 .

您也许可以使用 pabot,尽管它旨在将一项测试分成两部分或更多部分,而不是将一项测试分成两部分 运行。您或许可以根据自己的需要进行调整。

还有许多其他解决方案。例如,如果您使用的是 CI 服务器,您可以将两个作业设置为 运行,并创建第三个作业,当这两个作业完成时触发,它获取两个作业的输出并将它们合并成一份报告。

如果您使用的系统具有 bash shell,另一种解决方案是编写您自己的测试启动器,如下所示(尽管这完全未经测试):

# run two robot jobs in the background
robot -A firefox.args /path/to/tests.robot &
robot -A chrome.args /path/to/tests.robot &

# wait for the jobs to finish, then generate a consolidated report
wait
rebot --output ./output.xml firefox/output.xml chrome/.output.xml

在上面的例子中,.args 文件是标准的机器人框架argument files。在它们中,您可以指定命令行参数,例如 selenium 网格 URL、输出文件的唯一文件夹路径等。

例如:

# firefox.args
--variable GRID_URL: http://127.0.0.1/wd/hub
--variable CAPABILITIES:browserName:ff,version:45,platform:WINDOWS
--outputdir firefox_results

Also, where to assign hub url to trigger the execution?

当您使用 Open Browser 关键字打开浏览器时,您就会这样做。具体来说,使用 remote_url 参数。例如,测试用例可能如下所示,其中 ${GRID_URL}${CAPABILITIES} 在参数文件中定义:

*** Settings ***

| Library | Selenium2Library

*** Test cases ***
| Example of connecting to selenium grid
| | [Setup] | Open Browser
| | ... | http://example.com
| | ... | remote_url=${GRID_URL}
| | ... | desired_capabilities=${CAPABILITIES}

So I am looking for the solution to reduce total execution time by running test cases in parallel.

你有两个选择:

  1. 使用pabot自动将一个大套件分成几个并行测试运行s
  2. 为测试套件的不同部分手动创建多个作业(例如:pybot tests/suite1;pybot tests/suite2;pybot tests/suite3,等等)