From 2f3832fa153642a07649b6e449e3c2e70c6a5f9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petteri=20R=C3=A4ty?= Date: Wed, 26 Dec 2012 14:53:57 +0200 Subject: [PATCH] Make Node#text work for svg elements svg elements don't return to the non standard innerText attribute so fall back on the standard textContent when innerText is null. Fixes #437. --- spec/driver_spec.rb | 20 ++++++++++++++++++++ src/capybara.js | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/spec/driver_spec.rb b/spec/driver_spec.rb index b53578a6..0184a219 100644 --- a/spec/driver_spec.rb +++ b/spec/driver_spec.rb @@ -472,6 +472,26 @@ def visit(url, driver=driver) end end + context "svg app" do + let(:driver) do + driver_for_html(<<-HTML) + + + + In the navy! + + + + HTML + end + + before { visit("/") } + + it "should handle text for svg elements" do + driver.find("//*[@id='navy_text']").first.text.should == "In the navy!" + end + end + context "console messages app" do let(:driver) do driver_for_html(<<-HTML) diff --git a/src/capybara.js b/src/capybara.js index fe09b991..e39105f2 100644 --- a/src/capybara.js +++ b/src/capybara.js @@ -41,7 +41,7 @@ Capybara = { if (type == "textarea") { return node.innerHTML; } else { - return node.innerText; + return node.innerText || node.textContent; } },