如何从ruby文件在已打开的浏览器上执行命令

时间:2013-01-09 06:50:06

标签: ruby cucumber

我使用黄瓜框架测试Web应用程序,因为我开发我的脚本我必须每次在我的代码中添加一些内容后反复启动浏览器。我的问题是“是否可以从ruby(.rb)文件执行已打开的浏览器上的命令”?这将为我节省大量时间。我的框架基于黄瓜,水豚和硒webdriver。

提前致谢

3 个答案:

答案 0 :(得分:1)

It's not possible to use existing browser with Selenium Webdriver.

但是,驱动程序(Capybara-Webkit,Poltergeist,Webdriver的HtmlUnitDriver)比浏览器更快,启动时间更短。也许,他们会对你有好处。

答案 1 :(得分:0)

不确定你想要什么......如果你每次在UI-Code中改变某些内容时都需要“F5”,你可以考虑使用guard gem。

如果您编辑“观看次数”,

guard + guard-livereload以及应用中包含的rack-livereload会自动更新浏览器。

答案 2 :(得分:0)

我一直在使用猴子修补版的Selenium Webdriver,它可以在测试运行之间保持PhantomJS浏览器的打开状态。请参阅此博文:http://blog.sharetribe.com/2014/04/07/faster-cucumber-startup-keep-phantomjs-browser-open-between-tests/

诀窍是存根Selenium::WebDriver::PhantomJS::Service.create_process方法并告诉Selenium Driver使用默认端口8910,即使它是保留的。

您可以将这段代码添加到config / test.rb文件中:

class Selenium::WebDriver::PortProber
  def self.free?(port)
    true
  end
end

class Selenium::WebDriver::PhantomJS::Service
  def create_process(args)
    puts "Starting monkey-patched PhantomJS Selenium Webdriver"

    Struct.new("ChildProcessFake") do
      def start() end
      def exited?() true end
    end.new
  end
end

现在您可以在终端选项卡中启动PhantomJS:

phantomjs --webdriver=8910

当你运行PhantomJS时,你可以开始进行黄瓜测试。

显然这只适用于PhantomJS,但类似的东西也适用于其他浏览器。