lib/capy.rb in capy-1.3.0 vs lib/capy.rb in capy-1.4.0
- old
+ new
@@ -13,36 +13,35 @@
banner "capy [script.capy]\n"
on :b, :browser=, 'chrome, firefox', :default => 'chrome'
on :j, :js, 'eval script as javascript with -a option'
on :a, :'app-host=', 'app host'
on :s, :'stop', 'stop after eval script'
+ on :w, :webkit, 'use capybara webkit'
end
return 1 if opts.help?
trap('INT') { exit }
- Capybara.register_driver :selenium do |app|
- Capybara::Selenium::Driver.new(app, :browser => opts[:browser].to_sym)
- end
- Capybara.current_driver = :selenium
- Capybara.app_host = opts[:'app-host']
+ setup_capybara
@mode = opts.js? ? :javascript : :capybara
evaluater = Evaluater.new
- evaluater.visit (Capybara.app_host) if Capybara.app_host
+ evaluater.visit Capybara.app_host if Capybara.app_host
+
if args.empty?
start_shell evaluater
else
args.each do |script_file|
unless File.exists?(script_file)
puts "No such file: #{script_file}".red
return 1
end
puts "Running: #{script_file} ..."
- evaluater.eval_script File.read(script_file), mode
+ result = evaluater.eval_script File.read(script_file), mode
+ puts "=> #{result.inspect}".cyan
start_shell evaluater if opts.stop?
end
end
0
@@ -52,10 +51,26 @@
rescue => e
error e
1
end
+ def setup_capybara
+ if opts.webkit?
+ require 'capybara-webkit'
+ Capybara.register_driver :webkit do |app|
+ Capybara::Driver::Webkit.new(app, :browser => Capybara::Driver::Webkit::Browser.new)
+ end
+ Capybara.current_driver = :webkit
+ else
+ Capybara.register_driver :selenium do |app|
+ Capybara::Selenium::Driver.new(app, :browser => opts[:browser].to_sym)
+ end
+ Capybara.current_driver = :selenium
+ end
+ Capybara.app_host = opts[:'app-host']
+ end
+
EXIT_COMMANDS = %w(exit quit)
def start_shell(evaluater)
return if @_start_shell
@_start_shell = true
@@ -105,9 +120,18 @@
end
end
class Evaluater
include Capybara::DSL
+
+ def initialize
+ if page.driver.respond_to?(:header)
+ page.driver.header(
+ 'user-agent',
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.55.3 (KHTML, like Gecko) Version/5.1.5 Safari/534.55.3'
+ )
+ end
+ end
def eval_script(script, mode)
case mode
when :javascript
javascript script