0

我使用黄瓜框架来测试 Web 应用程序,当我开发我的脚本时,每次在我的代码中添加一些内容后,我都必须一次又一次地启动浏览器。我的问题是“是否可以从 ruby​​(.rb) 文件在已打开的浏览器上执行命令”??。这将节省我很多时间。我的框架基于 cucumber、capybara 和 selenium webdriver。

提前致谢

4

3 回答 3

1

无法将现有浏览器与 Selenium Webdriver 一起使用。

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

于 2013-01-09T07:16:11.210 回答
0

不确定您到底想要什么...如果每次更改 UI 代码中的某些内容时都必须“F5”,您可以考虑使用保护宝石。

如果您编辑“视图”,guard + guard-livereload 和应用程序中包含的 rack-livereload 会自动更新浏览器。

于 2013-01-09T10:39:39.317 回答
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 驱动程序使用默认端口 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 时,你可以开始你的 Cucumber 测试。

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

于 2014-04-14T09:02:52.093 回答