selenium-webdriver 4.0.0.beta4 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +70 -0
- data/README.md +1 -1
- data/lib/selenium/webdriver/atoms/getAttribute.js +25 -25
- data/lib/selenium/webdriver/chrome/driver.rb +4 -0
- data/lib/selenium/webdriver/chrome/features.rb +44 -4
- data/lib/selenium/webdriver/chrome/options.rb +24 -1
- data/lib/selenium/webdriver/common/driver.rb +5 -1
- data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +77 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +45 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +38 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +1 -6
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +17 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +87 -18
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +11 -11
- data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +77 -0
- data/lib/selenium/webdriver/common/driver_extensions/prints_page.rb +1 -1
- data/lib/selenium/webdriver/common/element.rb +17 -8
- data/lib/selenium/webdriver/common/error.rb +12 -0
- data/lib/selenium/webdriver/common/log_entry.rb +2 -2
- data/lib/selenium/webdriver/common/manager.rb +3 -13
- data/lib/selenium/webdriver/common/options.rb +13 -5
- data/lib/selenium/webdriver/common/shadow_root.rb +87 -0
- data/lib/selenium/webdriver/common/socket_poller.rb +30 -19
- data/lib/selenium/webdriver/common/target_locator.rb +28 -0
- data/lib/selenium/webdriver/common/timeouts.rb +31 -4
- data/lib/selenium/webdriver/common/window.rb +0 -4
- data/lib/selenium/webdriver/common.rb +6 -0
- data/lib/selenium/webdriver/devtools/pinned_script.rb +59 -0
- data/lib/selenium/webdriver/devtools/request.rb +27 -17
- data/lib/selenium/webdriver/devtools/response.rb +66 -0
- data/lib/selenium/webdriver/devtools.rb +50 -12
- data/lib/selenium/webdriver/edge/features.rb +5 -0
- data/lib/selenium/webdriver/firefox/driver.rb +5 -0
- data/lib/selenium/webdriver/firefox/features.rb +14 -0
- data/lib/selenium/webdriver/firefox/options.rb +28 -1
- data/lib/selenium/webdriver/firefox.rb +0 -1
- data/lib/selenium/webdriver/ie/options.rb +3 -1
- data/lib/selenium/webdriver/ie/service.rb +1 -1
- data/lib/selenium/webdriver/remote/bridge.rb +39 -23
- data/lib/selenium/webdriver/remote/capabilities.rb +3 -2
- data/lib/selenium/webdriver/remote/commands.rb +4 -0
- data/lib/selenium/webdriver/remote/driver.rb +3 -1
- data/lib/selenium/webdriver/remote.rb +1 -1
- data/lib/selenium/webdriver/safari/driver.rb +1 -1
- data/lib/selenium/webdriver/safari/options.rb +7 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +2 -2
- data/lib/selenium/webdriver/version.rb +1 -1
- data/lib/selenium/webdriver.rb +1 -0
- data/selenium-webdriver.gemspec +3 -2
- metadata +31 -3
| @@ -25,7 +25,7 @@ module Selenium | |
| 25 25 |  | 
| 26 26 | 
             
                    PORT = 4444
         | 
| 27 27 |  | 
| 28 | 
            -
                    attr_accessor : | 
| 28 | 
            +
                    attr_accessor :http, :file_detector
         | 
| 29 29 | 
             
                    attr_reader :capabilities
         | 
| 30 30 |  | 
| 31 31 | 
             
                    #
         | 
| @@ -93,17 +93,16 @@ module Selenium | |
| 93 93 | 
             
                      execute :get, {}, {url: url}
         | 
| 94 94 | 
             
                    end
         | 
| 95 95 |  | 
| 96 | 
            -
                     | 
| 97 | 
            -
             | 
| 98 | 
            -
                     | 
| 96 | 
            +
                    #
         | 
| 97 | 
            +
                    # timeouts
         | 
| 98 | 
            +
                    #
         | 
| 99 99 |  | 
| 100 | 
            -
                    def  | 
| 101 | 
            -
                       | 
| 100 | 
            +
                    def timeouts
         | 
| 101 | 
            +
                      execute :get_timeouts, {}
         | 
| 102 102 | 
             
                    end
         | 
| 103 103 |  | 
| 104 | 
            -
                    def  | 
| 105 | 
            -
                       | 
| 106 | 
            -
                      execute :set_timeout, {}, {type => milliseconds}
         | 
| 104 | 
            +
                    def timeouts=(timeouts)
         | 
| 105 | 
            +
                      execute :set_timeout, {}, timeouts
         | 
| 107 106 | 
             
                    end
         | 
| 108 107 |  | 
| 109 108 | 
             
                    #
         | 
| @@ -269,7 +268,7 @@ module Selenium | |
| 269 268 | 
             
                    end
         | 
| 270 269 |  | 
| 271 270 | 
             
                    def element_screenshot(element)
         | 
| 272 | 
            -
                      execute :take_element_screenshot, id: element | 
| 271 | 
            +
                      execute :take_element_screenshot, id: element
         | 
| 273 272 | 
             
                    end
         | 
| 274 273 |  | 
| 275 274 | 
             
                    #
         | 
| @@ -431,7 +430,7 @@ module Selenium | |
| 431 430 | 
             
                    end
         | 
| 432 431 |  | 
| 433 432 | 
             
                    def submit_element(element)
         | 
| 434 | 
            -
                      form = find_element_by('xpath', "./ancestor-or-self::form", element)
         | 
| 433 | 
            +
                      form = find_element_by('xpath', "./ancestor-or-self::form", [:element, element])
         | 
| 435 434 | 
             
                      execute_script("var e = arguments[0].ownerDocument.createEvent('Event');" \
         | 
| 436 435 | 
             
                                        "e.initEvent('submit', true, true);" \
         | 
| 437 436 | 
             
                                        'if (arguments[0].dispatchEvent(e)) { arguments[0].submit() }', form.as_json)
         | 
| @@ -451,19 +450,19 @@ module Selenium | |
| 451 450 | 
             
                    end
         | 
| 452 451 |  | 
| 453 452 | 
             
                    def element_dom_attribute(element, name)
         | 
| 454 | 
            -
                      execute :get_element_attribute, id: element | 
| 453 | 
            +
                      execute :get_element_attribute, id: element, name: name
         | 
| 455 454 | 
             
                    end
         | 
| 456 455 |  | 
| 457 456 | 
             
                    def element_property(element, name)
         | 
| 458 | 
            -
                      execute :get_element_property, id: element | 
| 457 | 
            +
                      execute :get_element_property, id: element, name: name
         | 
| 459 458 | 
             
                    end
         | 
| 460 459 |  | 
| 461 460 | 
             
                    def element_aria_role(element)
         | 
| 462 | 
            -
                      execute :get_element_aria_role, id: element | 
| 461 | 
            +
                      execute :get_element_aria_role, id: element
         | 
| 463 462 | 
             
                    end
         | 
| 464 463 |  | 
| 465 464 | 
             
                    def element_aria_label(element)
         | 
| 466 | 
            -
                      execute :get_element_aria_label, id: element | 
| 465 | 
            +
                      execute :get_element_aria_label, id: element
         | 
| 467 466 | 
             
                    end
         | 
| 468 467 |  | 
| 469 468 | 
             
                    def element_value(element)
         | 
| @@ -524,13 +523,17 @@ module Selenium | |
| 524 523 |  | 
| 525 524 | 
             
                    alias_method :switch_to_active_element, :active_element
         | 
| 526 525 |  | 
| 527 | 
            -
                    def find_element_by(how, what,  | 
| 526 | 
            +
                    def find_element_by(how, what, parent_ref = [])
         | 
| 528 527 | 
             
                      how, what = convert_locator(how, what)
         | 
| 529 528 |  | 
| 530 529 | 
             
                      return execute_atom(:findElements, Support::RelativeLocator.new(what).as_json).first if how == 'relative'
         | 
| 531 530 |  | 
| 532 | 
            -
                       | 
| 533 | 
            -
             | 
| 531 | 
            +
                      parent_type, parent_id = parent_ref
         | 
| 532 | 
            +
                      id = case parent_type
         | 
| 533 | 
            +
                           when :element
         | 
| 534 | 
            +
                             execute :find_child_element, {id: parent_id}, {using: how, value: what.to_s}
         | 
| 535 | 
            +
                           when :shadow_root
         | 
| 536 | 
            +
                             execute :find_shadow_child_element, {id: parent_id}, {using: how, value: what.to_s}
         | 
| 534 537 | 
             
                           else
         | 
| 535 538 | 
             
                             execute :find_element, {}, {using: how, value: what.to_s}
         | 
| 536 539 | 
             
                           end
         | 
| @@ -538,13 +541,17 @@ module Selenium | |
| 538 541 | 
             
                      Element.new self, element_id_from(id)
         | 
| 539 542 | 
             
                    end
         | 
| 540 543 |  | 
| 541 | 
            -
                    def find_elements_by(how, what,  | 
| 544 | 
            +
                    def find_elements_by(how, what, parent_ref = [])
         | 
| 542 545 | 
             
                      how, what = convert_locator(how, what)
         | 
| 543 546 |  | 
| 544 547 | 
             
                      return execute_atom :findElements, Support::RelativeLocator.new(what).as_json if how == 'relative'
         | 
| 545 548 |  | 
| 546 | 
            -
                       | 
| 547 | 
            -
             | 
| 549 | 
            +
                      parent_type, parent_id = parent_ref
         | 
| 550 | 
            +
                      ids = case parent_type
         | 
| 551 | 
            +
                            when :element
         | 
| 552 | 
            +
                              execute :find_child_elements, {id: parent_id}, {using: how, value: what.to_s}
         | 
| 553 | 
            +
                            when :shadow_root
         | 
| 554 | 
            +
                              execute :find_shadow_child_elements, {id: parent_id}, {using: how, value: what.to_s}
         | 
| 548 555 | 
             
                            else
         | 
| 549 556 | 
             
                              execute :find_elements, {}, {using: how, value: what.to_s}
         | 
| 550 557 | 
             
                            end
         | 
| @@ -552,6 +559,11 @@ module Selenium | |
| 552 559 | 
             
                      ids.map { |id| Element.new self, element_id_from(id) }
         | 
| 553 560 | 
             
                    end
         | 
| 554 561 |  | 
| 562 | 
            +
                    def shadow_root(element)
         | 
| 563 | 
            +
                      id = execute :get_element_shadow_root, id: element
         | 
| 564 | 
            +
                      ShadowRoot.new self, shadow_root_id_from(id)
         | 
| 565 | 
            +
                    end
         | 
| 566 | 
            +
             | 
| 555 567 | 
             
                    private
         | 
| 556 568 |  | 
| 557 569 | 
             
                    #
         | 
| @@ -599,7 +611,11 @@ module Selenium | |
| 599 611 | 
             
                    end
         | 
| 600 612 |  | 
| 601 613 | 
             
                    def element_id_from(id)
         | 
| 602 | 
            -
                      id['ELEMENT'] || id[ | 
| 614 | 
            +
                      id['ELEMENT'] || id[Element::ELEMENT_KEY]
         | 
| 615 | 
            +
                    end
         | 
| 616 | 
            +
             | 
| 617 | 
            +
                    def shadow_root_id_from(id)
         | 
| 618 | 
            +
                      id[ShadowRoot::ROOT_KEY]
         | 
| 603 619 | 
             
                    end
         | 
| 604 620 |  | 
| 605 621 | 
             
                    def prepare_capabilities_payload(capabilities)
         | 
| @@ -641,7 +657,7 @@ module Selenium | |
| 641 657 | 
             
                    # @see https://mathiasbynens.be/notes/css-escapes
         | 
| 642 658 | 
             
                    def escape_css(string)
         | 
| 643 659 | 
             
                      string = string.gsub(ESCAPE_CSS_REGEXP) { |match| "\\#{match}" }
         | 
| 644 | 
            -
                      string = "\\#{UNICODE_CODE_POINT + Integer(string[0])} #{string[1 | 
| 660 | 
            +
                      string = "\\#{UNICODE_CODE_POINT + Integer(string[0])} #{string[1..]}" if string[0]&.match?(/[[:digit:]]/)
         | 
| 645 661 |  | 
| 646 662 | 
             
                      string
         | 
| 647 663 | 
             
                    end
         | 
| @@ -39,6 +39,7 @@ module Selenium | |
| 39 39 | 
             
                      :timeouts,
         | 
| 40 40 | 
             
                      :unhandled_prompt_behavior,
         | 
| 41 41 | 
             
                      :strict_file_interactability,
         | 
| 42 | 
            +
                      :web_socket_url,
         | 
| 42 43 |  | 
| 43 44 | 
             
                      # remote-specific (webdriver.remote.sessionid)
         | 
| 44 45 | 
             
                      :remote_session_id
         | 
| @@ -46,7 +47,7 @@ module Selenium | |
| 46 47 |  | 
| 47 48 | 
             
                    (KNOWN - %i[proxy timeouts]).each do |key|
         | 
| 48 49 | 
             
                      define_method key do
         | 
| 49 | 
            -
                        @capabilities | 
| 50 | 
            +
                        @capabilities[key]
         | 
| 50 51 | 
             
                      end
         | 
| 51 52 |  | 
| 52 53 | 
             
                      define_method "#{key}=" do |value|
         | 
| @@ -202,7 +203,7 @@ module Selenium | |
| 202 203 | 
             
                    end
         | 
| 203 204 |  | 
| 204 205 | 
             
                    def proxy
         | 
| 205 | 
            -
                      @capabilities | 
| 206 | 
            +
                      @capabilities[:proxy]
         | 
| 206 207 | 
             
                    end
         | 
| 207 208 |  | 
| 208 209 | 
             
                    def proxy=(proxy)
         | 
| @@ -77,7 +77,10 @@ module Selenium | |
| 77 77 | 
             
                      find_elements: [:post, 'session/:session_id/elements'],
         | 
| 78 78 | 
             
                      find_child_element: [:post, 'session/:session_id/element/:id/element'],
         | 
| 79 79 | 
             
                      find_child_elements: [:post, 'session/:session_id/element/:id/elements'],
         | 
| 80 | 
            +
                      find_shadow_child_element: [:post, 'session/:session_id/shadow/:id/element'],
         | 
| 81 | 
            +
                      find_shadow_child_elements: [:post, 'session/:session_id/shadow/:id/elements'],
         | 
| 80 82 | 
             
                      get_active_element: [:get, 'session/:session_id/element/active'],
         | 
| 83 | 
            +
                      get_element_shadow_root: [:get, 'session/:session_id/element/:id/shadow'],
         | 
| 81 84 | 
             
                      is_element_selected: [:get, 'session/:session_id/element/:id/selected'],
         | 
| 82 85 | 
             
                      get_element_attribute: [:get, 'session/:session_id/element/:id/attribute/:name'],
         | 
| 83 86 | 
             
                      get_element_property: [:get, 'session/:session_id/element/:id/property/:name'],
         | 
| @@ -111,6 +114,7 @@ module Selenium | |
| 111 114 | 
             
                      # timeouts
         | 
| 112 115 | 
             
                      #
         | 
| 113 116 |  | 
| 117 | 
            +
                      get_timeouts: [:get, 'session/:session_id/timeouts'],
         | 
| 114 118 | 
             
                      set_timeout: [:post, 'session/:session_id/timeouts'],
         | 
| 115 119 |  | 
| 116 120 | 
             
                      #
         | 
| @@ -42,6 +42,7 @@ module Selenium | |
| 42 42 | 
             
                      end
         | 
| 43 43 | 
             
                      opts[:url] ||= "http://#{Platform.localhost}:4444/wd/hub"
         | 
| 44 44 | 
             
                      super
         | 
| 45 | 
            +
                      @bridge.file_detector = ->((filename, *)) { File.exist?(filename) && filename.to_s }
         | 
| 45 46 | 
             
                    end
         | 
| 46 47 |  | 
| 47 48 | 
             
                    private
         | 
| @@ -51,7 +52,8 @@ module Selenium | |
| 51 52 | 
             
                    end
         | 
| 52 53 |  | 
| 53 54 | 
             
                    def devtools_version
         | 
| 54 | 
            -
                      capabilities['se:cdpVersion'] | 
| 55 | 
            +
                      capabilities['se:cdpVersion']&.split('.')&.first ||
         | 
| 56 | 
            +
                        raise(Error::WebDriverError, "DevTools is not supported by the Remote Server")
         | 
| 55 57 | 
             
                    end
         | 
| 56 58 | 
             
                  end # Driver
         | 
| 57 59 | 
             
                end # Remote
         | 
| @@ -18,6 +18,7 @@ | |
| 18 18 | 
             
            # under the License.
         | 
| 19 19 |  | 
| 20 20 | 
             
            require 'uri'
         | 
| 21 | 
            +
            require 'selenium/webdriver/remote/server_error'
         | 
| 21 22 |  | 
| 22 23 | 
             
            module Selenium
         | 
| 23 24 | 
             
              module WebDriver
         | 
| @@ -25,7 +26,6 @@ module Selenium | |
| 25 26 | 
             
                  autoload :Bridge, 'selenium/webdriver/remote/bridge'
         | 
| 26 27 | 
             
                  autoload :Driver, 'selenium/webdriver/remote/driver'
         | 
| 27 28 | 
             
                  autoload :Response, 'selenium/webdriver/remote/response'
         | 
| 28 | 
            -
                  autoload :ServerError, 'selenium/webdriver/remote/server_error'
         | 
| 29 29 | 
             
                  autoload :Capabilities, 'selenium/webdriver/remote/capabilities'
         | 
| 30 30 | 
             
                  autoload :COMMANDS, 'selenium/webdriver/remote/commands'
         | 
| 31 31 | 
             
                  module Http
         | 
| @@ -28,6 +28,13 @@ module Selenium | |
| 28 28 | 
             
                                    automatic_profiling: 'safari:automaticProfiling'}.freeze
         | 
| 29 29 | 
             
                    BROWSER = 'safari'
         | 
| 30 30 |  | 
| 31 | 
            +
                    def add_option(name, value = nil)
         | 
| 32 | 
            +
                      key = name.is_a?(Hash) ? name.keys.first : name
         | 
| 33 | 
            +
                      raise ArgumentError, 'Safari does not support options that are not namespaced' unless key.to_s.include?(':')
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                      super
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
             | 
| 31 38 | 
             
                  end # Options
         | 
| 32 39 | 
             
                end # Safari
         | 
| 33 40 | 
             
              end # WebDriver
         | 
| @@ -76,7 +76,7 @@ module Selenium | |
| 76 76 | 
             
                        @delegate.find_element_by how, what, parent
         | 
| 77 77 | 
             
                      end
         | 
| 78 78 |  | 
| 79 | 
            -
                      Element.new self, e.ref
         | 
| 79 | 
            +
                      Element.new self, e.ref.last
         | 
| 80 80 | 
             
                    end
         | 
| 81 81 |  | 
| 82 82 | 
             
                    def find_elements_by(how, what, parent = nil)
         | 
| @@ -84,7 +84,7 @@ module Selenium | |
| 84 84 | 
             
                        @delegate.find_elements_by(how, what, parent)
         | 
| 85 85 | 
             
                      end
         | 
| 86 86 |  | 
| 87 | 
            -
                      es.map { |e| Element.new self, e.ref }
         | 
| 87 | 
            +
                      es.map { |e| Element.new self, e.ref.last }
         | 
| 88 88 | 
             
                    end
         | 
| 89 89 |  | 
| 90 90 | 
             
                    def execute_script(script, *args)
         | 
    
        data/lib/selenium/webdriver.rb
    CHANGED
    
    
    
        data/selenium-webdriver.gemspec
    CHANGED
    
    | @@ -28,7 +28,7 @@ Gem::Specification.new do |s| | |
| 28 28 | 
             
              }
         | 
| 29 29 |  | 
| 30 30 | 
             
              s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
         | 
| 31 | 
            -
              s.required_ruby_version = Gem::Requirement.new('>= 2. | 
| 31 | 
            +
              s.required_ruby_version = Gem::Requirement.new('>= 2.6')
         | 
| 32 32 |  | 
| 33 33 | 
             
              s.files = [
         | 
| 34 34 | 
             
                'CHANGES',
         | 
| @@ -45,11 +45,12 @@ Gem::Specification.new do |s| | |
| 45 45 | 
             
              s.require_paths = ['lib']
         | 
| 46 46 |  | 
| 47 47 | 
             
              s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
         | 
| 48 | 
            -
              s.add_runtime_dependency 'rexml', ['~> 3.2']
         | 
| 48 | 
            +
              s.add_runtime_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
         | 
| 49 49 | 
             
              s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
         | 
| 50 50 |  | 
| 51 51 | 
             
              # childprocess requires ffi on windows but doesn't declare it in its dependencies
         | 
| 52 52 | 
             
              s.add_development_dependency 'ffi'
         | 
| 53 | 
            +
              s.add_development_dependency 'pry', ['~> 0.14']
         | 
| 53 54 | 
             
              s.add_development_dependency 'rack', ['~> 2.0']
         | 
| 54 55 | 
             
              s.add_development_dependency 'rake'
         | 
| 55 56 | 
             
              s.add_development_dependency 'rspec', ['~> 3.0']
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: selenium-webdriver
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 4.0.0 | 
| 4 | 
            +
              version: 4.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Alex Rodionov
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date: 2021- | 
| 13 | 
            +
            date: 2021-10-13 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: childprocess
         | 
| @@ -39,6 +39,9 @@ dependencies: | |
| 39 39 | 
             
                - - "~>"
         | 
| 40 40 | 
             
                  - !ruby/object:Gem::Version
         | 
| 41 41 | 
             
                    version: '3.2'
         | 
| 42 | 
            +
                - - ">="
         | 
| 43 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 44 | 
            +
                    version: 3.2.5
         | 
| 42 45 | 
             
              type: :runtime
         | 
| 43 46 | 
             
              prerelease: false
         | 
| 44 47 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| @@ -46,6 +49,9 @@ dependencies: | |
| 46 49 | 
             
                - - "~>"
         | 
| 47 50 | 
             
                  - !ruby/object:Gem::Version
         | 
| 48 51 | 
             
                    version: '3.2'
         | 
| 52 | 
            +
                - - ">="
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: 3.2.5
         | 
| 49 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 50 56 | 
             
              name: rubyzip
         | 
| 51 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -74,6 +80,20 @@ dependencies: | |
| 74 80 | 
             
                - - ">="
         | 
| 75 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 76 82 | 
             
                    version: '0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: pry
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - "~>"
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0.14'
         | 
| 90 | 
            +
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - "~>"
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0.14'
         | 
| 77 97 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 78 98 | 
             
              name: rack
         | 
| 79 99 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -238,10 +258,14 @@ files: | |
| 238 258 | 
             
            - lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
         | 
| 239 259 | 
             
            - lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
         | 
| 240 260 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_addons.rb
         | 
| 261 | 
            +
            - lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb
         | 
| 241 262 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
         | 
| 263 | 
            +
            - lib/selenium/webdriver/common/driver_extensions/has_casting.rb
         | 
| 242 264 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
         | 
| 265 | 
            +
            - lib/selenium/webdriver/common/driver_extensions/has_context.rb
         | 
| 243 266 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
         | 
| 244 267 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
         | 
| 268 | 
            +
            - lib/selenium/webdriver/common/driver_extensions/has_launching.rb
         | 
| 245 269 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_location.rb
         | 
| 246 270 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_log_events.rb
         | 
| 247 271 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_logs.rb
         | 
| @@ -249,6 +273,7 @@ files: | |
| 249 273 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb
         | 
| 250 274 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb
         | 
| 251 275 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_permissions.rb
         | 
| 276 | 
            +
            - lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb
         | 
| 252 277 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb
         | 
| 253 278 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_session_id.rb
         | 
| 254 279 | 
             
            - lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb
         | 
| @@ -282,6 +307,7 @@ files: | |
| 282 307 | 
             
            - lib/selenium/webdriver/common/search_context.rb
         | 
| 283 308 | 
             
            - lib/selenium/webdriver/common/service.rb
         | 
| 284 309 | 
             
            - lib/selenium/webdriver/common/service_manager.rb
         | 
| 310 | 
            +
            - lib/selenium/webdriver/common/shadow_root.rb
         | 
| 285 311 | 
             
            - lib/selenium/webdriver/common/socket_lock.rb
         | 
| 286 312 | 
             
            - lib/selenium/webdriver/common/socket_poller.rb
         | 
| 287 313 | 
             
            - lib/selenium/webdriver/common/takes_screenshot.rb
         | 
| @@ -294,7 +320,9 @@ files: | |
| 294 320 | 
             
            - lib/selenium/webdriver/devtools/console_event.rb
         | 
| 295 321 | 
             
            - lib/selenium/webdriver/devtools/exception_event.rb
         | 
| 296 322 | 
             
            - lib/selenium/webdriver/devtools/mutation_event.rb
         | 
| 323 | 
            +
            - lib/selenium/webdriver/devtools/pinned_script.rb
         | 
| 297 324 | 
             
            - lib/selenium/webdriver/devtools/request.rb
         | 
| 325 | 
            +
            - lib/selenium/webdriver/devtools/response.rb
         | 
| 298 326 | 
             
            - lib/selenium/webdriver/edge.rb
         | 
| 299 327 | 
             
            - lib/selenium/webdriver/edge/driver.rb
         | 
| 300 328 | 
             
            - lib/selenium/webdriver/edge/features.rb
         | 
| @@ -358,7 +386,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 358 386 | 
             
              requirements:
         | 
| 359 387 | 
             
              - - ">="
         | 
| 360 388 | 
             
                - !ruby/object:Gem::Version
         | 
| 361 | 
            -
                  version: '2. | 
| 389 | 
            +
                  version: '2.6'
         | 
| 362 390 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 363 391 | 
             
              requirements:
         | 
| 364 392 | 
             
              - - ">"
         |