Skip to content

Commit

Permalink
Use geckodrivers is_element_displayed endpoint when available
Browse files Browse the repository at this point in the history
  • Loading branch information
twalpole committed Jul 26, 2019
1 parent 1ffe240 commit 28d845f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,20 @@
module Capybara::Selenium::Driver::FirefoxDriver
def self.extended(driver)
driver.extend Capybara::Selenium::Driver::W3CFirefoxDriver if w3c?(driver)
bridge = driver.send(:bridge)
bridge.extend Capybara::Selenium::IsDisplayed unless bridge.commands(:is_element_displayed)
end

def self.w3c?(driver)
(defined?(Selenium::WebDriver::VERSION) && (Selenium::WebDriver::VERSION.to_f >= 4)) ||
driver.browser.capabilities.is_a?(::Selenium::WebDriver::Remote::W3C::Capabilities)
end

private

def bridge
browser.send(:bridge)
end
end

module Capybara::Selenium::Driver::W3CFirefoxDriver
Expand Down
6 changes: 6 additions & 0 deletions lib/capybara/selenium/nodes/firefox_node.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ def select_option
click unless selected_or_disabled
end

def visible?
return super if ENV['DISABLE_CAPYBARA_SELENIUM_OPTIMIZATIONS']

bridge.send(:execute, :is_element_displayed, id: native.ref)
end

private

def click_with_options(click_options)
Expand Down

0 comments on commit 28d845f

Please sign in to comment.