Skip to content

Instantly share code, notes, and snippets.

@jarib
Created November 23, 2010 23:17
Show Gist options
  • Save jarib/712749 to your computer and use it in GitHub Desktop.
Save jarib/712749 to your computer and use it in GitHub Desktop.
IE driver - reductions
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
script = <<S
var browserbot = {
triggerEvent: function(element, eventType, canBubble, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown) {
canBubble = (typeof(canBubble) == undefined) ? true: canBubble;
if (element.fireEvent && element.ownerDocument && element.ownerDocument.createEventObject) {
// IE
var evt = this.createEventObject(element, controlKeyDown, altKeyDown, shiftKeyDown, metaKeyDown);
element.fireEvent('on' + eventType, evt);
} else {
var evt = document.createEvent('HTMLEvents');
try {
evt.shiftKey = shiftKeyDown;
evt.metaKey = metaKeyDown;
evt.altKey = altKeyDown;
evt.ctrlKey = controlKeyDown;
} catch(e) {
// Nothing sane to do
}
evt.initEvent(eventType, canBubble, true);
return element.dispatchEvent(evt);
}
}
};
return browserbot.triggerEvent.apply(browserbot, arguments);
S
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.close
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
trigger = driver.find_element(:id => "trigger")
driver.execute_script(script, trigger, 'click')
output = driver.find_element(:id => "output").text
puts "#{browser}: #{output}"
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.unlink
#
# expected output:
#
# ie: triggered
# firefox: triggered
#
# actual output:
#
# JavaScript error
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:180:in `executeScript'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/driver.rb:211:in `execute_script'
# test.rb:45
# test.rb:39:in `each'
# test.rb:39
# firefox: triggered
#
__END__
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" charset="utf-8">
function log (e) {
document.getElementById('output').innerHTML += "<p>" + e.toString() + "</p>";
}
</script>
</head>
<body>
<div id="trigger" onclick='log("triggered")'>click me</div>
<div id="output"></div>
</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.close
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
puts browser
options = driver.find_elements(:tag_name => "option")
options.each do |option|
bool = driver.execute_script "return !!arguments[0].getAttributeNode(arguments[1]);", option, 'label'
puts "\t#{bool}"
end
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.unlink
#
# expected output:
#
# ie
# false
# true
# firefox
# false
# true
#
# actual output:
#
# ie
# JavaScript error
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:180:in `executeScript'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/driver.rb:211:in `execute_script'
# test.rb:18
# test.rb:17:in `each'
# test.rb:17
# test.rb:9:in `each'
# test.rb:9
# firefox
# false
# true
__END__
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<select id="countries">
<option value="1">Norway</option>
<option value="2" label="USA"></option>
</select>
</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.close
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
driver.find_elements(:xpath => "//div[@class='doesnt-exist']")
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.unlink
#
# Firefox correctly returns an empty array:
#
# -> POST session/b3f9a511-f250-42ee-9a57-6eea50349728/elements
# >>> {"value":"//div[@class='doesnt-exist']","using":"xpath"}
# > {"Content-Type"=>"application/json; charset=utf-8", "Content-Length"=>"56", "Accept"=>"application/json"}
# <- {"name":"findElements","sessionId":"b3f9a511-f250-42ee-9a57-6eea50349728","status":0,"value":[]}
#
# IE returns null:
#
# -> POST session/cbfa6a3c-516f-4e7a-bcba-9bd109423e6e/elements
# >>> {"value":"//div[@class='doesnt-exist']","using":"xpath"}
# > {"Content-Type"=>"application/json; charset=utf-8", "Content-Length"=>"56", "Accept"=>"application/json"}
# <- {"sessionId":"cbfa6a3c-516f-4e7a-bcba-9bd109423e6e","status":0,"value":null}
__END__
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
</head>
<body>foo</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.flush
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
puts browser
driver.find_elements(:tag_name => "option").each do |option|
puts "text: #{option.text}, selected: #{option.selected?}"
end
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.close
#
# expected output:
#
# ie
# text: Denmark, selected: false
# text: Norway, selected: true
# text: Sweden, selected: false
# text: United Kingdom, selected: false
# text: USA, selected: false
# firefox
# text: Denmark, selected: false
# text: Norway, selected: true
# text: Sweden, selected: false
# text: United Kingdom, selected: false
# text: USA, selected: false
#
# actual output:
#
# ie
# Error determining if element is selected
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:313:in `isElementSelected'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/element.rb:153:in `selected?'
# test.rb:17:in `block (2 levels) in <main>'
# test.rb:16:in `each'
# test.rb:16:in `block in <main>'
# test.rb:10:in `each'
# test.rb:10:in `<main>'
# firefox
# text: Denmark, selected: false
# text: Norway, selected: true
# text: Sweden, selected: false
# text: United Kingdom, selected: false
# text: USA, selected: false
__END__
<!DOCTYPE html>
<html>
<head>
<title>Country Select</title>
</head>
<body>
<select name="new_user_country" id="new_user_country" class="country">
<option class="scandinavia" value="1">Denmark</option>
<option id="nor" class="scandinavia" value="2" selected="selected">Norway</option>
<option class="scandinavia" value="3">Sweden</option>
<option value="4">United Kingdom</option>
<option value="5">USA</option>
</select> <br />
</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.close
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
driver.find_elements(:xpath => "//div[@id='table-rows-test']")
puts "#{browser}: ok"
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.unlink
#
# expected output:
#
# ie: ok
# firefox: ok
#
# actual output:
#
# Unable to find element with xpath == //div[@id='table-rows-test']
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:359:in `find_element_by'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:257:in `findElementByXpath'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/find.rb:44:in `send'
# C:/Ruby187/lib/ruby/gems/1.8/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/find.rb:44:in `find_element'
# test.rb:14
# test.rb:9:in `each'
# test.rb:9
# firefox: ok
#
#
__END__
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Nested tables from WebKit/LayoutTests/fast/dom</title>
</head>
<body></body>
<script>
function buildRowsTest()
{
var rowsTest = document.createElement("div");
rowsTest.id = "table-rows-test";
document.body.appendChild(rowsTest);
};
buildRowsTest();
</script>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.flush
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
tag = driver.find_element(:xpath => "//label[@for='new_user_first_name']").tag_name
puts "#{browser}: #{tag}"
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.close
#
# expected output:
#
# ie: label
# firefox: label
#
# actual output:
#
# Unable to find element with xpath == //*[@for='new_user_first_name']
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:359:in `find_element_by'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:257:in `findElementByXpath'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/find.rb:44:in `find_element'
# test.rb:15:in `block in <main>'
# test.rb:10:in `each'
# test.rb:10:in `<main>'
# firefox: label
#
__END__
<!DOCTYPE html>
<html>
<body>
<label for="new_user_first_name" id="first_label">First name</label>
<input name="new_user_first_name" id="new_user_first_name" class="name" />
</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.flush
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
tag = driver.find_element(:xpath => "//meta[@http-equiv='Content-Type']").tag_name
puts "#{browser}: #{tag}"
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.close
#
# expected output:
#
# ie: meta
# firefox: meta
#
# actual output:
#
# Unable to find element with xpath == //meta[@http-equiv='Content-Type']
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:359:in `find_element_by'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:257:in `findElementByXpath'
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/find.rb:44:in `find_element'
# test.rb:15:in `block in <main>'
# test.rb:10:in `each'
# test.rb:10:in `<main>'
# firefox: meta
__END__
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
foo
</body>
</html>
require 'rubygems'
require 'selenium-webdriver'
begin
driver = Selenium::WebDriver.for :ie
driver.navigate.to "http://google.com" # i.e. any page
# Overwriting window.prompt fails, but alert() and confirm() appears to work.
driver.execute_script "window.prompt = function(text, value) { window.__lastWatirPrompt = { message: text, default: value }; return true; }"
ensure
driver.quit if driver
end
# error:
#
# C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:45:in `assert_ok': JavaScript error (Selenium::WebDriver::Error::UnexpectedJavascriptError)
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `new'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:50:in `create_response'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/default.rb:50:in `request'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/http/common.rb:35:in `call'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:406:in `raw_execute'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:384:in `execute'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/remote/bridge.rb:180:in `executeScript'
# from C:/Ruby192/lib/ruby/gems/1.9.1/gems/selenium-webdriver-0.1.1.dev/lib/selenium/webdriver/common/driver.rb:211:in `execute_script'
# from prompt_test.rb:8:in `<main>'
require 'rubygems'
require 'selenium-webdriver'
require 'ext-tempfile'
html = ExtTempfile.new("ie-test.html")
html.write DATA.read
html.close
[:ie, :firefox].each do |browser|
begin
driver = Selenium::WebDriver.for browser
driver.navigate.to "file://#{html.path}"
text = driver.find_element(:id => "t1_r2_c2").text
puts browser
puts "\t#{text.inspect}"
rescue => e
puts $!, $@
ensure
driver.quit if driver
end
end
html.unlink
# expected output:
#
# ie
# "Table 1, Row 2, Cell 2 Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2"
# firefox
# "Table 1, Row 2, Cell 2 Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2"
#
# actual output - IE adds extra newlines:
#
# ie
# "Table 1, Row 2, Cell 2 \nTable 2, Row 1, Cell 1 \nTable 2, Row 1, Cell 2"
# firefox
# "Table 1, Row 2, Cell 2 Table 2, Row 1, Cell 1 Table 2, Row 1, Cell 2"
#
#
__END__
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Nested table</title>
</head>
<body>
<table border="1" id="outer">
<tr id="outer_first">
<td>
Table 1, Row 1, Cell 1
</td>
<td>
Table 1, Row 1, Cell 2
</td>
</tr>
<tr id="outer_second">
<td id="t1_r2_c1">
Table 1, Row 2, Cell 1
</td>
<td id="t1_r2_c2">
Table 1, Row 2, Cell 2
<table border="1" id="inner">
<tr id="inner_first">
<td id="t2_r1_c1">
Table 2, Row 1, Cell 1
</td>
<td>
Table 2, Row 1, Cell 2
</td>
</tr>
</table>
</td>
</tr>
<tr id="outer_last">
<td>
Table 1, Row 3, Cell 1
</td>
<td>
Table 1, Row 3, Cell 2
</td>
</tr>
</table>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment