From 73dc59cc293cfa6e343c6f167a352558abb75351 Mon Sep 17 00:00:00 2001 From: Matthias Marschall Date: Wed, 27 May 2009 14:02:09 +0200 Subject: [PATCH] click_button in selenium works now same as in headless mode --- .../location_strategy_javascript/button.js | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/webrat/selenium/location_strategy_javascript/button.js b/lib/webrat/selenium/location_strategy_javascript/button.js index add1679..1af6900 100644 --- a/lib/webrat/selenium/location_strategy_javascript/button.js +++ b/lib/webrat/selenium/location_strategy_javascript/button.js @@ -1,12 +1,19 @@ if (locator == '*') { return selenium.browserbot.locationStrategies['xpath'].call(this, "//input[@type='submit']", inDocument, inWindow) } +var buttons = inDocument.getElementsByTagName('button'); var inputs = inDocument.getElementsByTagName('input'); -return $A(inputs).find(function(candidate){ - inputType = candidate.getAttribute('type'); - if (inputType == 'submit' || inputType == 'image') { - var buttonText = $F(candidate); - return (PatternMatcher.matches(locator, buttonText)); - } - return false; +var result = $A(inputs).concat($A(buttons)).find(function(candidate){ + var type = candidate.getAttribute('type'); + if (type == 'submit' || type == 'image' || type == 'button') { + var matches_id = PatternMatcher.matches(locator, candidate.id); + var matches_value = PatternMatcher.matches(locator, candidate.value); + var matches_html = PatternMatcher.matches(locator, candidate.innerHTML); + var matches_alt = PatternMatcher.matches(locator, candidate.alt); + if (matches_id || matches_value || matches_html || matches_alt) { + return true; + } + } + return false; }); +return result;