使用webdriver和Grid2并行执行RSpec测试

时间:2012-05-09 19:18:17

标签: ruby rspec parallel-processing webdriver

  • GUI自动化工具:Webdriver
  • 并行执行:Selenium Grid 2
  • 脚本语言:Ruby
  • BDD工具:Rspec

我的测试看起来像是:

def set_up
  @driver = Selenium::WebDriver.for(:remote,:url => "http://localhost:4444",
    :desired_capabilities => :firefox)
end

def clean_up
  @driver.quit
end

it "test_direct_log_in" do
  @log_in_page = Page.new(@driver).go_to_log_in_Page
  @log_in_page.login("apple@gmail.com","password")
  Assert.new(@driver).verify_text_present("My Dashboard")
end

it "test_direct_log_in" do
  @log_in_page = Page.new(@driver).go_to_log_in_Page
  @log_in_page.login("banana@gmail.com","password")
  Assert.new(@driver).verify_text_present("My Dashboard")
end

步骤:

  • 使用java -jar启动集线器selenium-server-staalone-2.3.0.jar -role hub
  • 使用java -jar selenium-server-standalone-2.21.0.jar -role node -hub http://localhost:4444/grid/register -maxsession = 20 -port 5555
  • 将节点分配给集线器

我能够顺序执行测试.. 真正的问题是我无法并行执行测试...

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

根据你所说的, 让我清楚一点,selenium网格不会在一个测试套件下运行多个单元测试,因为如果你在一个文件中的一个测试套件下有4个测试(比如apple.rb), 因为在运行测试文件时,rspec将按顺序运行它们,最终sel网格将按顺序运行它们。

Selenium网格虽然会同时运行多个请求到达集线器。 因此,例如,如果您有两个终端实例并且从两个实例运行apple.rb,那么Sel网格将平行运行这些测试。

您可能正在寻找的是让Rspec并行运行各个测试。

这有助于https://github.com/grosser/parallel_tests