Skip to content

Instantly share code, notes, and snippets.

@gongo
Last active December 16, 2015 14:59
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 gongo/5452375 to your computer and use it in GitHub Desktop.
Save gongo/5452375 to your computer and use it in GitHub Desktop.
Selenium Webdriver with IE8 で「onclick 内 function で submit() した場合、radio button の value が post されない」ってのを確かめるためのもの。
$ bundle install --path vendor/bundle
$ bundle exec ruby web.rb
export SELENIUM_HOST=192.168.56.102
export APP_HOST=192.168.56.1  # IP address of machine that launch web.rb

for browser in "ie" "firefox" "chrome" ; do
  SELENIUM_BROWSER=$browser bundle exec ruby web_test.rb
done
source "https://rubygems.org"
gem 'capybara'
gem 'sinatra'
gem 'selenium-webdriver'
GEM
remote: https://rubygems.org/
specs:
capybara (2.1.0)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
xpath (~> 2.0)
childprocess (0.3.9)
ffi (~> 1.0, >= 1.0.11)
ffi (1.8.1)
mime-types (1.23)
multi_json (1.7.2)
nokogiri (1.5.9)
rack (1.5.2)
rack-protection (1.5.0)
rack
rack-test (0.6.2)
rack (>= 1.0)
rubyzip (0.9.9)
selenium-webdriver (2.32.1)
childprocess (>= 0.2.5)
multi_json (~> 1.0)
rubyzip
websocket (~> 1.0.4)
sinatra (1.4.2)
rack (~> 1.5, >= 1.5.2)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
tilt (1.3.7)
websocket (1.0.7)
xpath (2.0.0)
nokogiri (~> 1.3)
PLATFORMS
ruby
DEPENDENCIES
capybara
selenium-webdriver
sinatra
require 'sinatra'
require 'erb'
set bind: '0.0.0.0'
get '/' do
erb :index
end
post '/' do
erb :index
end
__END__
@@ index
<!DOCTYPE html>
<head>
<script>
function ggg() {
document.serif.submit();
}
function area() {
document.getElementById('area').innerText = 'hogehoge';
document.getElementById('area').textContent = 'hogehoge';
}
</script>
</head>
<body>
<form action="/" method="POST" name="serif">
<label><input type="radio" name="hello" value="hoge" onclick="ggg();"/>Hoge</label>
<label><input type="radio" name="hello" value="fuga" onclick="ggg();"/>Fuga</label>
<label><input type="radio" name="hello" value="hago" onclick="ggg();"/>Hago</label>
</form>
<img src="data:image/png;base64,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" usemap="#example">
<map name="example">
<area onclick="area();" href="#" shape="rect" coords="0,0,40,40">
</map>
<div id="area">aiueo<%= params[:hello] %></div>
</body>
</html>
require 'capybara'
require 'capybara/dsl'
require 'selenium-webdriver'
require 'test/unit'
browser = case ENV['SELENIUM_BROWSER']
when 'ie'
'internet_explorer'
when 'chrome'
'chrome'
else
'firefox'
end
Capybara.register_driver :remote_browser do |app|
Capybara::Selenium::Driver.new(app,
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.send(browser),
browser: :remote,
url: "http://#{ENV['SELENIUM_HOST']}:4444/wd/hub/"
)
end
Capybara.app_host = "http://#{ENV['APP_HOST']}:4567"
Capybara.run_server = false
Capybara.default_driver = :remote_browser
class WebTest < Test::Unit::TestCase
include Capybara::DSL
def test_get_index
visit '/'
assert page.has_unchecked_field?('Hoge')
assert page.has_unchecked_field?('Fuga')
assert page.has_unchecked_field?('Hago')
end
def test_click_area_index
visit '/'
find(:xpath, '//map/area').click
assert page.find(:css, 'div#area').has_content?('hogehoge');
end
def test_post_index
visit '/'
%w{Hoge Fuga Hago}.each do |item|
page.choose(item)
assert page.find(:css, 'div#area').has_content?(item.downcase)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment