Selenium grid使用Robot框架实现

时间:2016-05-04 18:12:17

标签: python selenium robotframework

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

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

1 个答案:

答案 0 :(得分:4)

  

我不知道如何触发并行测试用例执行

除了可以同时运行两次机器人这一事实外,机器人没有任何内置支持并行运行测试。如果要对两个不同的浏览器运行相同的测试,则必须运行两次机器人,并为每次测试运行一组不同的参数(即:浏览器规范)。

您可以使用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
  

另外,在哪里分配hub url来触发执行?

使用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}
  

所以我正在寻找通过并行运行测试用例来减少总执行时间的解决方案。

您有两种选择:

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