123456789_123456789_123456789_123456789_123456789_

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

Instance Method Summary

Instance Method Details

#pin_script(script) ⇒ DevTools::PinnedScript

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:

  • script (String)
[ GitHub ]

  
# File 'rb/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>

Returns the list of all pinned scripts.

[ GitHub ]

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

def pinned_scripts
  @pinned_scripts ||= []
end

#unpin_script(script)

Unpins script making it undefined for the subsequent calls.

Parameters:

[ GitHub ]

  
# File 'rb/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