class Webdrivers::Edgedriver
Public Class Methods
base_url()
click to toggle source
Returns url with domain for calls to get this driver.
@return [String]
# File lib/webdrivers/edgedriver.rb, line 24 def base_url # 'https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/' 'https://msedgedriver.azureedge.net/' end
browser_version()
click to toggle source
Returns currently installed Edge version.
@return [Gem::Version]
# File lib/webdrivers/edgedriver.rb, line 16 def browser_version normalize_version EdgeFinder.version end
Private Class Methods
apple_m1_compatible?(driver_version)
click to toggle source
# File lib/webdrivers/edgedriver.rb, line 69 def apple_m1_compatible?(driver_version) if System.apple_m1_architecture? && driver_version >= normalize_version('87.0.669.0') Webdrivers.logger.debug 'msedgedriver version is Apple M1 compatible.' return true end Webdrivers.logger.debug 'msedgedriver version is NOT Apple M1 compatible. Required >= 87.0.669.0' false end
download_url()
click to toggle source
# File lib/webdrivers/edgedriver.rb, line 97 def download_url return @download_url if @download_url driver_version = if required_version == EMPTY_VERSION latest_version else normalize_version(required_version) end filename = driver_filename(driver_version) url = "#{base_url}/#{driver_version}/edgedriver_#{filename}.zip" Webdrivers.logger.debug "msedgedriver URL: #{url}" @download_url = url end
driver_filename(driver_version)
click to toggle source
def linux_compatible?(driver_version)
System.platform == 'linux' && driver_version >= normalize_version('89.0.731.0')
end
# File lib/webdrivers/edgedriver.rb, line 83 def driver_filename(driver_version) if System.platform == 'win' || System.wsl_v1? "win#{System.bitsize}" # 32 or 64-bit # elsif linux_compatible?(driver_version) # 'linux64' elsif System.platform == 'mac' # Determine M1 or Intel architecture apple_arch = apple_m1_compatible?(driver_version) ? 'arm' : 'mac' "#{apple_arch}64" else raise 'Failed to determine driver filename to download for your OS.' end end
failed_to_find_message(version)
click to toggle source
# File lib/webdrivers/edgedriver.rb, line 45 def failed_to_find_message(version) msg = "Unable to find latest point release version for #{version}." msg = begin # str = Network.get(URI.join(base_url, 'LATEST_RELEASE')) # Microsoft doesn't yet/ever support LATEST_RELEASE - Use Canary as latest str = Network.get(URI.join(base_url, 'LATEST_CANARY')) latest_release = normalize_version(str.encode('ASCII-8BIT', 'UTF-16')) if version > latest_release "#{msg} You appear to be using a non-production version of Edge." else msg end rescue NetworkError "#{msg} A network issue is preventing determination of latest msedgedriver release." end "#{msg} Please set `Webdrivers::Edgedriver.required_version = <desired driver version>` "\ "to a known edgedriver version: Can not reach #{base_url}" end
file_name()
click to toggle source
# File lib/webdrivers/edgedriver.rb, line 65 def file_name System.platform == 'win' ? 'msedgedriver.exe' : 'msedgedriver' end
latest_point_release(version)
click to toggle source
# File lib/webdrivers/edgedriver.rb, line 31 def latest_point_release(version) # Microsoft doesn't currently provide LATEST_RELEASE_X.Y.Z - only use X # but require the driver version be >= the passed in version str = Network.get(URI.join(base_url, "LATEST_RELEASE_#{version.segments[0]}")) latest_release = normalize_version(str.encode('ASCII-8BIT', 'UTF-16')) raise VersionError unless latest_release >= version latest_release rescue NetworkError, VersionError msg = failed_to_find_message(version) Webdrivers.logger.debug msg raise VersionError, msg end