Module: Selenium::WebDriver::DriverExtensions::HasPinnedScripts Private

Defined in:
lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

API:

  • private

Instance Method Summary collapse

Instance Method Details

#pin_script(script) ⇒ DevTools::PinnedScript

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Pins JavaScript snippet that is available during the whole session on every page. This allows to store and call scripts without sending them over the wire every time.

Examples:

script = driver.pin_script('return window.location.href')
driver.execute_script(script)
# navigate to a new page
driver.execute_script(script)

Parameters:

Returns:

API:

  • private



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb', line 49

def pin_script(script)
  script = DevTools::PinnedScript.new(script)
  pinned_scripts << script

  devtools.page.enable
  devtools.runtime.evaluate(expression: script.callable)
  response = devtools.page.add_script_to_evaluate_on_new_document(source: script.callable)
  script.devtools_identifier = response.dig('result', 'identifier')

  script
end

#pinned_scriptsArray<DevTools::PinnedScript>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the list of all pinned scripts.

Returns:

API:

  • private



30
31
32
# File 'lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb', line 30

def pinned_scripts
  @pinned_scripts ||= []
end

#unpin_script(script) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Unpins script making it undefined for the subsequent calls.

Parameters:

API:

  • private



67
68
69
70
71
# File 'lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb', line 67

def unpin_script(script)
  devtools.runtime.evaluate(expression: script.remove)
  devtools.page.remove_script_to_evaluate_on_new_document(identifier: script.devtools_identifier)
  pinned_scripts.delete(script)
end