一尘不染

Selenium RC:自动在多个浏览器中运行测试

selenium

因此,我已经开始创建一些使用Selenium RC来直接在浏览器中测试我的Web应用程序的Ruby单元测试。我正在将Selenum-
Client
用于红宝石。我已经为所有其他selenium测试创建了基类。

这将创建许多SeleniumDriver实例,并且在每个实例上调用所有缺少的方法。这实际上是并行运行测试。

别人如何做到这一点?

这是我的实现:

class SeleniumTest < Test::Unit::TestCase
  def setup
    @seleniums = %w(*firefox *iexplore).map do |browser|
      puts 'creating browser ' + browser
      Selenium::SeleniumDriver.new("localhost", 4444, browser, "http://localhost:3003", 10000)
    end

    start
    open start_address
  end

  def teardown
      stop
  end

  #sub-classes should override this if they want to change it
  def start_address
    "http://localhost:3003/"
  end

  # Overrides standard "open" method
  def open(addr)
    method_missing 'open', addr
  end

  # Overrides standard "type" method
  def type(inputLocator, value)
    method_missing 'type', inputLocator, value
  end

  # Overrides standard "select" method
  def select(inputLocator, optionLocator)
    method_missing 'select', inputLocator, optionLocator
  end

  def method_missing(method_name, *args)
    @seleniums.each do |selenium_driver|
      if args.empty?
        selenium_driver.send method_name
      else
        selenium_driver.send method_name, *args
      end

    end
  end
end

这可以工作,但是如果一个浏览器失败,则整个测试将失败,并且无法知道它在哪个浏览器上失败。


阅读 229

收藏
2020-06-26

共1个答案

一尘不染

您尝试过Selenium Grid吗?我认为它会创建相当不错的摘要报告,其中显示了您需要的详细信息。我可能是错的,因为我已经有一段时间没有使用它了。

2020-06-26