Skip to content

Instantly share code, notes, and snippets.

@trinary
Created August 12, 2011 19:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save trinary/1142795 to your computer and use it in GitHub Desktop.
Save trinary/1142795 to your computer and use it in GitHub Desktop.
#!/bin/env ruby
#
require 'rubygems'
require 'capybara'
require 'capybara/dsl'
require 'capybara-webkit'
require 'nokogiri'
require 'uri'
require 'net/https'
class CapybaraWalker
include Capybara
attr_accessor :test, :name, :home
def open(args)
Capybara.visit(args[:target])
end
def type(args)
type,id = args[:target].split '='
Capybara.fill_in(id, :with => args[:arg])
end
def click(args)
clicker(args)
end
def clickAndWait(args)
clicker(args)
#Capybara.find(selector).click
end
def clicker(args)
type = args[:target].split '='.first
if (type == "css")
selector = args[:target].gsub('css=','')
Capybara.find(selector).click
elsif (type == "link")
selector = args[:target].gsub('link=','')
Capybara.click_link(selector)
end
end
def initialize(url)
@uri = URI.parse(url)
@test = Nokogiri::HTML.parse(Net::HTTP.get(URI.parse(url)))
@home = URI.parse(@test.xpath('/html/head/link[@rel="selenium.base"]/@href').first.value)
Capybara.default_driver = :webkit
Capybara.run_server = false
Capybara.app_host = @home.scheme + '://' + @home.host
Capybara.visit(@home.path)
@test.xpath('/html/body/table/tbody/tr').each do |e|
action = e.xpath('td[1]').first.text
target = e.xpath('td[2]').first.text
arg = e.xpath('td[3]').first.text
self.send action,{:target => target, :arg => arg}
puts "ran #{action} on #{target} with #{arg}"
end
end
end
walker = CapybaraWalker.new('http://localhost:8000/testcase2.html')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment