Handle selenium 4 ref response change

This commit is contained in:
Thomas Walpole 2021-10-23 17:10:11 -07:00
parent 12b9e1650e
commit b045ef807c
4 changed files with 9 additions and 4 deletions

View File

@ -484,6 +484,12 @@ private
JS
end
def native_id
# Selenium 3 -> 4 changed the return of ref
type_or_id, id = native.ref
id || type_or_id
end
GET_XPATH_SCRIPT = <<~'JS'
(function(el, xml){
var xpath = '';

View File

@ -63,9 +63,8 @@ class Capybara::Selenium::ChromeNode < Capybara::Selenium::Node
def visible?
return super unless native_displayed?
begin
bridge.send(:execute, :is_element_displayed, id: native.ref)
bridge.send(:execute, :is_element_displayed, id: native_id)
rescue Selenium::WebDriver::Error::UnknownCommandError
# If the is_element_displayed command is unknown, no point in trying again
driver.options[:native_displayed] = false

View File

@ -69,7 +69,7 @@ class Capybara::Selenium::EdgeNode < Capybara::Selenium::Node
return super unless chrome_edge? && native_displayed?
begin
bridge.send(:execute, :is_element_displayed, id: native.ref)
bridge.send(:execute, :is_element_displayed, id: native_id)
rescue Selenium::WebDriver::Error::UnknownCommandError
# If the is_element_displayed command is unknown, no point in trying again
driver.options[:native_displayed] = false

View File

@ -76,7 +76,7 @@ class Capybara::Selenium::FirefoxNode < Capybara::Selenium::Node
return super unless native_displayed?
begin
bridge.send(:execute, :is_element_displayed, id: native.ref)
bridge.send(:execute, :is_element_displayed, id: native_id)
rescue Selenium::WebDriver::Error::UnknownCommandError
# If the is_element_displayed command is unknown, no point in trying again
driver.options[:native_displayed] = false