Support native is_element_displayed with EdgeChrome

This commit is contained in:
Thomas Walpole 2019-08-02 13:26:30 -07:00
parent 724e245b6e
commit d82b21a915
3 changed files with 24 additions and 1 deletions

1
.rspec
View File

@ -2,4 +2,3 @@
--order random
--require rspec/instafail
--format RSpec::Instafail
--format progress

View File

@ -3,6 +3,12 @@
require 'capybara/selenium/nodes/edge_node'
module Capybara::Selenium::Driver::EdgeDriver
def self.extended(base)
bridge = base.send(:bridge)
bridge.extend Capybara::Selenium::IsDisplayed unless bridge.commands(:is_element_displayed)
base.options[:native_displayed] = false if base.options[:native_displayed].nil?
end
def fullscreen_window(handle)
return super if edgedriver_version < 75

View File

@ -63,6 +63,18 @@ class Capybara::Selenium::EdgeNode < Capybara::Selenium::Node
click unless selected_or_disabled
end
def visible?
return super unless chrome_edge? && native_displayed?
begin
bridge.send(:execute, :is_element_displayed, id: native.ref)
rescue Selenium::WebDriver::Error::UnknownCommandError
# If the is_element_displayed command is unknown, no point in trying again
driver.options[:native_displayed] = false
super
end
end
private
def file_errors
@ -81,4 +93,10 @@ private
def chrome_edge?
browser_version >= 75
end
def native_displayed?
(driver.options[:native_displayed] != false) &&
# chromedriver_supports_displayed_endpoint? &&
(!ENV['DISABLE_CAPYBARA_SELENIUM_OPTIMIZATIONS'])
end
end