Class: Puppeteer::Page
- Inherits:
-
Object
- Object
- Puppeteer::Page
- Includes:
- EventCallbackable, IfPresent
- Defined in:
- lib/puppeteer/page.rb,
lib/puppeteer/page/pdf_options.rb,
lib/puppeteer/page/screenshot_options.rb
Defined Under Namespace
Classes: FileChooserTimeoutError, PDFOptions, PrintToPdfIsNotImplementedError, ProtocolStreamReader, ScreenshotOptions, ScriptTag, StyleTag, TargetCrashedError
Constant Summary collapse
- EVENT_MAPPINGS =
{ close: 'Events.Page.Close', # console: 'Events.Page.Console', # dialog: 'Events.Page.Dialog', domcontentloaded: 'Events.Page.DOMContentLoaded', # error: frameattached: 'Events.Page.FrameAttached', framedetached: 'Events.Page.FrameDetached', framenavigated: 'Events.Page.FrameNavigated', load: 'Events.Page.Load', # metrics: 'Events.Page.Metrics', # pageerror: 'Events.Page.PageError', popup: 'Events.Page.Popup', request: 'Events.Page.Request', requestfailed: 'Events.Page.RequestFailed', requestfinished: 'Events.Page.RequestFinished', response: 'Events.Page.Response', # workercreated: 'Events.Page.WorkerCreated', # workerdestroyed: 'Events.Page.WorkerDestroyed', }
Instance Attribute Summary collapse
-
#accessibility ⇒ Object
readonly
Returns the value of attribute accessibility.
-
#coverage ⇒ Object
readonly
Returns the value of attribute coverage.
-
#javascript_enabled ⇒ Object
/** * @param number, latitude: number, accuracy: (number|undefined)} options */ async setGeolocation(options) { const { longitude, latitude, accuracy = 0} = options; if (longitude < -180 || longitude > 180) throw new Error(‘Invalid longitude “$longitude”: precondition -180 <= LONGITUDE <= 180 failed.`); if (latitude < -90 || latitude > 90) throw new Error(`Invalid latitude “$latitude”: precondition -90 <= LATITUDE <= 90 failed.`); if (accuracy < 0) throw new Error(`Invalid accuracy “$accuracy”: precondition 0 <= ACCURACY failed.`); await this._client.send(’Emulation.setGeolocationOverride’, latitude, accuracy); }.
-
#keyboard ⇒ Object
readonly
Returns the value of attribute keyboard.
-
#mouse ⇒ Object
readonly
Returns the value of attribute mouse.
-
#target ⇒ Object
readonly
/** * @param number, latitude: number, accuracy: (number|undefined)} options */ async setGeolocation(options) { const { longitude, latitude, accuracy = 0} = options; if (longitude < -180 || longitude > 180) throw new Error(‘Invalid longitude “$longitude”: precondition -180 <= LONGITUDE <= 180 failed.`); if (latitude < -90 || latitude > 90) throw new Error(`Invalid latitude “$latitude”: precondition -90 <= LATITUDE <= 90 failed.`); if (accuracy < 0) throw new Error(`Invalid accuracy “$accuracy”: precondition 0 <= ACCURACY failed.`); await this._client.send(’Emulation.setGeolocationOverride’, latitude, accuracy); }.
-
#touch_screen ⇒ Object
readonly
Returns the value of attribute touch_screen.
-
#viewport ⇒ Object
Returns the value of attribute viewport.
Class Method Summary collapse
Instance Method Summary collapse
- #add_script_tag(script_tag) ⇒ !Promise<!ElementHandle>
- #add_style_tag(style_tag) ⇒ !Promise<!ElementHandle>
- #authenticate(username: nil, password: nil) ⇒ Object
- #browser ⇒ Object
- #browser_context ⇒ Object
- #bypass_csp=(enabled) ⇒ Object
- #cache_enabled=(enabled) ⇒ Object
- #click(selector, delay: nil, button: nil, click_count: nil) ⇒ Object
- #close(run_before_unload: false) ⇒ Object
- #closed? ⇒ boolean
- #content ⇒ String
- #content=(html) ⇒ Object
- #default_navigation_timeout=(timeout) ⇒ Object
- #default_timeout=(timeout) ⇒ Object
- #emulate(device) ⇒ Object
- #emulate_media_type(media_type) ⇒ Object
- #emulate_timezone(timezone_id) ⇒ Object
- #evaluate(page_function, *args) ⇒ !Promise<*>
- #evaluate_handle(page_function, *args) ⇒ !Promise<!Puppeteer.JSHandle>
- #extra_http_headers=(headers) ⇒ Object
- #focus(selector) ⇒ Object
- #frames ⇒ Object
- #go_back(timeout: nil, wait_until: nil) ⇒ Object
- #go_forward(timeout: nil, wait_until: nil) ⇒ Object
- #goto(url, referer: nil, timeout: nil, wait_until: nil) ⇒ Object
- #handle_file_chooser(event) ⇒ Object
- #hover(selector) ⇒ Object
- #init ⇒ Object
-
#initialize(client, target, ignore_https_errors, screenshot_task_queue) ⇒ Page
constructor
A new instance of Page.
- #main_frame ⇒ Object
- #offline_mode=(enabled) ⇒ Object
- #on(event_name, &block) ⇒ Object
- #once(event_name, &block) ⇒ Object
- #pdf(options = {}) ⇒ String
- #query_objects(prototype_handle) ⇒ !Promise<!Puppeteer.JSHandle>
- #reload(timeout: nil, wait_until: nil) ⇒ Puppeteer::Response
- #request_interception=(value) ⇒ Object
-
#S(selector) ⇒ !Promise<?Puppeteer.ElementHandle>
‘$()` in JavaScript.
-
#screenshot(options = {}) ⇒ Object
/** * @param !ScreenshotOptions= options * @return !Promise<!Buffer|!String> */.
- #select(selector, *values) ⇒ !Promise<!Array<string>>
- #set_content(html, timeout: nil, wait_until: nil) ⇒ Object
-
#Seval(selector, page_function, *args) ⇒ Object
‘$eval()` in JavaScript.
-
#SS(selector) ⇒ !Promise<!Array<!Puppeteer.ElementHandle>>
‘$$()` in JavaScript.
-
#SSeval(selector, page_function, *args) ⇒ Object
‘$$eval()` in JavaScript.
-
#Sx(expression) ⇒ !Promise<!Array<!Puppeteer.ElementHandle>>
‘$x()` in JavaScript.
- #tap(selector) ⇒ Object
- #title ⇒ String
- #type_text(selector, text, delay: nil) ⇒ Object
- #url ⇒ String
- #user_agent=(user_agent) ⇒ Object
- #wait_for_file_chooser(timeout: nil) ⇒ Puppeteer::FileChooser
- #wait_for_function(page_function, options = {}, *args) ⇒ !Promise<!Puppeteer.JSHandle>
- #wait_for_selector(selector, visible: nil, hidden: nil, timeout: nil) ⇒ Object
- #wait_for_xpath(xpath, visible: nil, hidden: nil, timeout: nil) ⇒ Object
- #workers ⇒ Object
Methods included from IfPresent
Methods included from EventCallbackable
#add_event_listener, #emit_event, #observe_first, #on_event, #remove_event_listener
Constructor Details
#initialize(client, target, ignore_https_errors, screenshot_task_queue) ⇒ Page
Returns a new instance of Page.
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/puppeteer/page.rb', line 31 def initialize(client, target, ignore_https_errors, screenshot_task_queue) @closed = false @client = client @target = target @keyboard = Puppeteer::Keyboard.new(client) @mouse = Puppeteer::Mouse.new(client, @keyboard) @timeout_settings = Puppeteer::TimeoutSettings.new @touchscreen = Puppeteer::TouchScreen.new(client, @keyboard) # @accessibility = Accessibility.new(client) @frame_manager = Puppeteer::FrameManager.new(client, self, ignore_https_errors, @timeout_settings) @emulation_manager = Puppeteer::EmulationManager.new(client) # @tracing = Tracing.new(client) @page_bindings = {} # @coverage = Coverage.new(client) @javascript_enabled = true @screenshot_task_queue = screenshot_task_queue @workers = {} @client.on_event 'Target.attachedToTarget' do |event| if event['targetInfo']['type'] != 'worker' # If we don't detach from service workers, they will never die. await @client.('Target.detachFromTarget', sessionId: event['sessionId']) next end session = Puppeteer::Connection.from_session(@client).session(event['sessionId']) # rubocop:disable Lint/UselessAssignment # const worker = new Worker(session, event.targetInfo.url, this._addConsoleMessage.bind(this), this._handleException.bind(this)); # this._workers.set(event.sessionId, worker); # this.emit(Events.Page.WorkerCreated, worker); end @client.on_event 'Target.detachedFromTarget' do |event| session_id = event['sessionId'] worker = @workers[session_id] next unless worker emit_event('Events.Page.WorkerDestroyed', worker) @workers.delete(session_id) end @frame_manager.on_event 'Events.FrameManager.FrameAttached' do |event| emit_event 'Events.Page.FrameAttached', event end @frame_manager.on_event 'Events.FrameManager.FrameDetached' do |event| emit_event 'Events.Page.FrameDetached', event end @frame_manager.on_event 'Events.FrameManager.FrameNavigated' do |event| emit_event 'Events.Page.FrameNavigated', event end network_manager = @frame_manager.network_manager network_manager.on_event 'Events.NetworkManager.Request' do |event| emit_event 'Events.Page.Request', event end network_manager.on_event 'Events.NetworkManager.Response' do |event| emit_event 'Events.Page.Response', event end network_manager.on_event 'Events.NetworkManager.RequestFailed' do |event| emit_event 'Events.Page.RequestFailed', event end network_manager.on_event 'Events.NetworkManager.RequestFinished' do |event| emit_event 'Events.Page.RequestFinished', event end @file_chooser_interception_is_disabled = false @file_chooser_interceptors = Set.new @client.on_event 'Page.domContentEventFired' do |event| emit_event 'Events.Page.DOMContentLoaded' end @client.on_event 'Page.loadEventFired' do |event| emit_event 'Events.Page.Load' end # client.on('Runtime.consoleAPICalled', event => this._onConsoleAPI(event)); # client.on('Runtime.bindingCalled', event => this._onBindingCalled(event)); # client.on('Page.javascriptDialogOpening', event => this._onDialog(event)); # client.on('Runtime.exceptionThrown', exception => this._handleException(exception.exceptionDetails)); # client.on('Inspector.targetCrashed', event => this._onTargetCrashed()); # client.on('Performance.metrics', event => this._emitMetrics(event)); @client.on_event 'Log.entryAdded' do |event| handle_log_entry_added(event) end @client.on_event 'Page.fileChooserOpened' do |event| handle_file_chooser(event) end @target.is_closed_promise.then do emit_event 'Events.Page.Close' @closed = true end end |
Instance Attribute Details
#accessibility ⇒ Object (readonly)
Returns the value of attribute accessibility.
269 270 271 |
# File 'lib/puppeteer/page.rb', line 269 def accessibility @accessibility end |
#coverage ⇒ Object (readonly)
Returns the value of attribute coverage.
269 270 271 |
# File 'lib/puppeteer/page.rb', line 269 def coverage @coverage end |
#javascript_enabled ⇒ Object
/**
* @param {!{longitude: number, latitude: number, accuracy: (number|undefined)}}
*/
async setGeolocation(options)
const { longitude, latitude, accuracy = 0 = ;
if (longitude < -180 || longitude > 180)
throw new Error(`Invalid longitude "$longitude": precondition -180 <= LONGITUDE <= 180 failed.`);
if (latitude < -90 || latitude > 90)
throw new Error(`Invalid latitude "$latitude": precondition -90 <= LATITUDE <= 90 failed.`);
if (accuracy < 0)
throw new Error(`Invalid accuracy "$accuracy": precondition 0 <= ACCURACY failed.`);
await this._client.send('Emulation.setGeolocationOverride', latitude, accuracy);
}
226 227 228 |
# File 'lib/puppeteer/page.rb', line 226 def javascript_enabled @javascript_enabled end |
#keyboard ⇒ Object (readonly)
Returns the value of attribute keyboard.
269 270 271 |
# File 'lib/puppeteer/page.rb', line 269 def keyboard @keyboard end |
#mouse ⇒ Object (readonly)
Returns the value of attribute mouse.
1040 1041 1042 |
# File 'lib/puppeteer/page.rb', line 1040 def mouse @mouse end |
#target ⇒ Object (readonly)
/**
* @param {!{longitude: number, latitude: number, accuracy: (number|undefined)}}
*/
async setGeolocation(options)
const { longitude, latitude, accuracy = 0 = ;
if (longitude < -180 || longitude > 180)
throw new Error(`Invalid longitude "$longitude": precondition -180 <= LONGITUDE <= 180 failed.`);
if (latitude < -90 || latitude > 90)
throw new Error(`Invalid latitude "$latitude": precondition -90 <= LATITUDE <= 90 failed.`);
if (accuracy < 0)
throw new Error(`Invalid accuracy "$accuracy": precondition 0 <= ACCURACY failed.`);
await this._client.send('Emulation.setGeolocationOverride', latitude, accuracy);
}
226 227 228 |
# File 'lib/puppeteer/page.rb', line 226 def target @target end |
#touch_screen ⇒ Object (readonly)
Returns the value of attribute touch_screen.
269 270 271 |
# File 'lib/puppeteer/page.rb', line 269 def touch_screen @touch_screen end |
#viewport ⇒ Object
Returns the value of attribute viewport.
866 867 868 |
# File 'lib/puppeteer/page.rb', line 866 def end |
Class Method Details
.create(client, target, ignore_https_errors, default_viewport, screenshot_task_queue) ⇒ !Promise<!Page>
18 19 20 21 22 23 24 25 |
# File 'lib/puppeteer/page.rb', line 18 def self.create(client, target, ignore_https_errors, , screenshot_task_queue) page = Puppeteer::Page.new(client, target, ignore_https_errors, screenshot_task_queue) page.init if page. = end page end |
Instance Method Details
#add_script_tag(script_tag) ⇒ !Promise<!ElementHandle>
417 418 419 |
# File 'lib/puppeteer/page.rb', line 417 def add_script_tag(script_tag) main_frame.add_script_tag(script_tag) end |
#add_style_tag(style_tag) ⇒ !Promise<!ElementHandle>
433 434 435 |
# File 'lib/puppeteer/page.rb', line 433 def add_style_tag(style_tag) main_frame.add_style_tag(style_tag) end |
#authenticate(username: nil, password: nil) ⇒ Object
471 472 473 |
# File 'lib/puppeteer/page.rb', line 471 def authenticate(username: nil, password: nil) @frame_manager.network_manager.authenticate(username: username, password: password) end |
#browser ⇒ Object
228 229 230 |
# File 'lib/puppeteer/page.rb', line 228 def browser @target.browser end |
#browser_context ⇒ Object
232 233 234 |
# File 'lib/puppeteer/page.rb', line 232 def browser_context @target.browser_context end |
#bypass_csp=(enabled) ⇒ Object
819 820 821 |
# File 'lib/puppeteer/page.rb', line 819 def bypass_csp=(enabled) @client.('Page.setBypassCSP', enabled: enabled) end |
#cache_enabled=(enabled) ⇒ Object
887 888 889 |
# File 'lib/puppeteer/page.rb', line 887 def cache_enabled=(enabled) @frame_manager.network_manager.cache_enabled = enabled end |
#click(selector, delay: nil, button: nil, click_count: nil) ⇒ Object
1046 1047 1048 |
# File 'lib/puppeteer/page.rb', line 1046 def click(selector, delay: nil, button: nil, click_count: nil) main_frame.click(selector, delay: delay, button: , click_count: click_count) end |
#close(run_before_unload: false) ⇒ Object
1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 |
# File 'lib/puppeteer/page.rb', line 1022 def close(run_before_unload: false) unless @client.connection raise 'Protocol error: Connection closed. Most likely the page has been closed.' end if run_before_unload @client.('Page.close') else @client.connection.('Target.closeTarget', targetId: @target.target_id) await @target.is_closed_promise end end |
#closed? ⇒ boolean
1036 1037 1038 |
# File 'lib/puppeteer/page.rb', line 1036 def closed? @closed end |
#content ⇒ String
650 651 652 |
# File 'lib/puppeteer/page.rb', line 650 def content main_frame.content end |
#content=(html) ⇒ Object
662 663 664 |
# File 'lib/puppeteer/page.rb', line 662 def content=(html) main_frame.set_content(html) end |
#default_navigation_timeout=(timeout) ⇒ Object
289 290 291 |
# File 'lib/puppeteer/page.rb', line 289 def (timeout) @timeout_settings. = timeout end |
#default_timeout=(timeout) ⇒ Object
294 295 296 |
# File 'lib/puppeteer/page.rb', line 294 def default_timeout=(timeout) @timeout_settings.default_timeout = timeout end |
#emulate(device) ⇒ Object
806 807 808 809 |
# File 'lib/puppeteer/page.rb', line 806 def emulate(device) self. = device. self.user_agent = device.user_agent end |
#emulate_media_type(media_type) ⇒ Object
824 825 826 827 828 829 830 |
# File 'lib/puppeteer/page.rb', line 824 def emulate_media_type(media_type) media_type_str = media_type.to_s unless ['screen', 'print', ''].include?(media_type_str) raise ArgumentError.new("Unsupported media type: #{media_type}") end @client.('Emulation.setEmulatedMedia', media: media_type_str) end |
#emulate_timezone(timezone_id) ⇒ Object
849 850 851 852 853 854 855 856 857 |
# File 'lib/puppeteer/page.rb', line 849 def emulate_timezone(timezone_id) @client.('Emulation.setTimezoneOverride', timezoneId: timezone_id || '') rescue => err if err..include?('Invalid timezone') raise ArgumentError.new("Invalid timezone ID: #{timezone_id}") else raise err end end |
#evaluate(page_function, *args) ⇒ !Promise<*>
871 872 873 |
# File 'lib/puppeteer/page.rb', line 871 def evaluate(page_function, *args) main_frame.evaluate(page_function, *args) end |
#evaluate_handle(page_function, *args) ⇒ !Promise<!Puppeteer.JSHandle>
319 320 321 322 |
# File 'lib/puppeteer/page.rb', line 319 def evaluate_handle(page_function, *args) context = main_frame.execution_context context.evaluate_handle(page_function, *args) end |
#extra_http_headers=(headers) ⇒ Object
476 477 478 |
# File 'lib/puppeteer/page.rb', line 476 def extra_http_headers=(headers) @frame_manager.network_manager.extra_http_headers = headers end |
#focus(selector) ⇒ Object
1053 1054 1055 |
# File 'lib/puppeteer/page.rb', line 1053 def focus(selector) main_frame.focus(selector) end |
#frames ⇒ Object
271 272 273 |
# File 'lib/puppeteer/page.rb', line 271 def frames @frame_manager.frames end |
#go_back(timeout: nil, wait_until: nil) ⇒ Object
783 784 785 |
# File 'lib/puppeteer/page.rb', line 783 def go_back(timeout: nil, wait_until: nil) go(-1, timeout: timeout, wait_until: wait_until) end |
#go_forward(timeout: nil, wait_until: nil) ⇒ Object
789 790 791 |
# File 'lib/puppeteer/page.rb', line 789 def go_forward(timeout: nil, wait_until: nil) go(+1, timeout: timeout, wait_until: wait_until) end |
#goto(url, referer: nil, timeout: nil, wait_until: nil) ⇒ Object
670 671 672 |
# File 'lib/puppeteer/page.rb', line 670 def goto(url, referer: nil, timeout: nil, wait_until: nil) main_frame.goto(url, referer: referer, timeout: timeout, wait_until: wait_until) end |
#handle_file_chooser(event) ⇒ Object
168 169 170 171 172 173 174 175 176 177 178 179 180 |
# File 'lib/puppeteer/page.rb', line 168 def handle_file_chooser(event) return if @file_chooser_interceptors.empty? frame = @frame_manager.frame(event['frameId']) context = frame.execution_context element = context.adopt_backend_node_id(event['backendNodeId']) interceptors = @file_chooser_interceptors.to_a @file_chooser_interceptors.clear file_chooser = Puppeteer::FileChooser.new(element, event) interceptors.each do |promise| promise.fulfill(file_chooser) end end |
#hover(selector) ⇒ Object
1060 1061 1062 |
# File 'lib/puppeteer/page.rb', line 1060 def hover(selector) main_frame.hover(selector) end |
#init ⇒ Object
120 121 122 123 124 125 126 127 |
# File 'lib/puppeteer/page.rb', line 120 def init await_all( @frame_manager.async_init, @client.('Target.setAutoAttach', autoAttach: true, waitForDebuggerOnStart: false, flatten: true), @client.('Performance.enable'), @client.('Log.enable'), ) end |
#main_frame ⇒ Object
265 266 267 |
# File 'lib/puppeteer/page.rb', line 265 def main_frame @frame_manager.main_frame end |
#offline_mode=(enabled) ⇒ Object
284 285 286 |
# File 'lib/puppeteer/page.rb', line 284 def offline_mode=(enabled) @frame_manager.network_manager.offline_mode = enabled end |
#on(event_name, &block) ⇒ Object
151 152 153 154 155 156 157 |
# File 'lib/puppeteer/page.rb', line 151 def on(event_name, &block) unless EVENT_MAPPINGS.has_key?(event_name.to_sym) raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{EVENT_MAPPINGS.keys.join(", ")}") end add_event_listener(EVENT_MAPPINGS[event_name.to_sym], &block) end |
#once(event_name, &block) ⇒ Object
160 161 162 163 164 165 166 |
# File 'lib/puppeteer/page.rb', line 160 def once(event_name, &block) unless EVENT_MAPPINGS.has_key?(event_name.to_sym) raise ArgumentError.new("Unknown event name: #{event_name}. Known events are #{EVENT_MAPPINGS.keys.join(", ")}") end observe_first(EVENT_MAPPINGS[event_name.to_sym], &block) end |
#pdf(options = {}) ⇒ String
1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 |
# File 'lib/puppeteer/page.rb', line 1009 def pdf( = {}) = PDFOptions.new() result = @client.('Page.printToPDF', .page_print_args) ProtocolStreamReader.new(client: @client, handle: result['stream'], path: .path).read rescue => err if err..include?('PrintToPDF is not implemented') raise PrintToPdfIsNotImplementedError.new else raise end end |
#query_objects(prototype_handle) ⇒ !Promise<!Puppeteer.JSHandle>
328 329 330 331 |
# File 'lib/puppeteer/page.rb', line 328 def query_objects(prototype_handle) context = main_frame.execution_context context.query_objects(prototype_handle) end |
#reload(timeout: nil, wait_until: nil) ⇒ Puppeteer::Response
677 678 679 680 681 682 |
# File 'lib/puppeteer/page.rb', line 677 def reload(timeout: nil, wait_until: nil) await_all( (timeout: timeout, wait_until: wait_until), @client.('Page.reload'), ).first end |
#request_interception=(value) ⇒ Object
280 281 282 |
# File 'lib/puppeteer/page.rb', line 280 def request_interception=(value) @frame_manager.network_manager.request_interception = value end |
#S(selector) ⇒ !Promise<?Puppeteer.ElementHandle>
‘$()` in JavaScript. $ is not allowed to use as a method name in Ruby.
301 302 303 |
# File 'lib/puppeteer/page.rb', line 301 def S(selector) main_frame.S(selector) end |
#screenshot(options = {}) ⇒ Object
/**
* @param {!ScreenshotOptions=}
* @return {!Promise<!Buffer|!String>}
*/
900 901 902 903 904 905 |
# File 'lib/puppeteer/page.rb', line 900 def screenshot( = {}) = ScreenshotOptions.new() # @screenshot_task_queue.post_task(-> { screenshot_task(screenshot_options.type, screenshot_options) }) screenshot_task(.type, ) end |
#select(selector, *values) ⇒ !Promise<!Array<string>>
1067 1068 1069 |
# File 'lib/puppeteer/page.rb', line 1067 def select(selector, *values) main_frame.select(selector, *values) end |
#set_content(html, timeout: nil, wait_until: nil) ⇒ Object
657 658 659 |
# File 'lib/puppeteer/page.rb', line 657 def set_content(html, timeout: nil, wait_until: nil) main_frame.set_content(html, timeout: timeout, wait_until: wait_until) end |
#Seval(selector, page_function, *args) ⇒ Object
‘$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.
337 338 339 |
# File 'lib/puppeteer/page.rb', line 337 def Seval(selector, page_function, *args) main_frame.Seval(selector, page_function, *args) end |
#SS(selector) ⇒ !Promise<!Array<!Puppeteer.ElementHandle>>
‘$$()` in JavaScript. $ is not allowed to use as a method name in Ruby.
310 311 312 |
# File 'lib/puppeteer/page.rb', line 310 def SS(selector) main_frame.SS(selector) end |
#SSeval(selector, page_function, *args) ⇒ Object
‘$$eval()` in JavaScript. $ is not allowed to use as a method name in Ruby.
347 348 349 |
# File 'lib/puppeteer/page.rb', line 347 def SSeval(selector, page_function, *args) main_frame.SSeval(selector, page_function, *args) end |
#Sx(expression) ⇒ !Promise<!Array<!Puppeteer.ElementHandle>>
‘$x()` in JavaScript. $ is not allowed to use as a method name in Ruby.
356 357 358 |
# File 'lib/puppeteer/page.rb', line 356 def Sx(expression) main_frame.Sx(expression) end |
#tap(selector) ⇒ Object
1074 1075 1076 |
# File 'lib/puppeteer/page.rb', line 1074 def tap(selector) main_frame.tap(selector) end |
#title ⇒ String
892 893 894 |
# File 'lib/puppeteer/page.rb', line 892 def title main_frame.title end |
#type_text(selector, text, delay: nil) ⇒ Object
1083 1084 1085 |
# File 'lib/puppeteer/page.rb', line 1083 def type_text(selector, text, delay: nil) main_frame.type_text(selector, text, delay: delay) end |
#url ⇒ String
645 646 647 |
# File 'lib/puppeteer/page.rb', line 645 def url main_frame.url end |
#user_agent=(user_agent) ⇒ Object
481 482 483 |
# File 'lib/puppeteer/page.rb', line 481 def user_agent=(user_agent) @frame_manager.network_manager.user_agent = user_agent end |
#wait_for_file_chooser(timeout: nil) ⇒ Puppeteer::FileChooser
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/puppeteer/page.rb', line 190 def wait_for_file_chooser(timeout: nil) if @file_chooser_interceptors.empty? @client.('Page.setInterceptFileChooserDialog', enabled: true) end option_timeout = timeout || @timeout_settings.timeout promise = resolvable_future @file_chooser_interceptors << promise begin Timeout.timeout(option_timeout / 1000.0) do promise.value! end rescue Timeout::Error raise FileChooserTimeoutError.new(timeout: option_timeout) ensure @file_chooser_interceptors.delete(promise) end end |
#wait_for_function(page_function, options = {}, *args) ⇒ !Promise<!Puppeteer.JSHandle>
1113 1114 1115 |
# File 'lib/puppeteer/page.rb', line 1113 def wait_for_function(page_function, = {}, *args) main_frame.wait_for_function(page_function, , *args) end |
#wait_for_selector(selector, visible: nil, hidden: nil, timeout: nil) ⇒ Object
1093 1094 1095 |
# File 'lib/puppeteer/page.rb', line 1093 def wait_for_selector(selector, visible: nil, hidden: nil, timeout: nil) main_frame.wait_for_selector(selector, visible: visible, hidden: hidden, timeout: timeout) end |
#wait_for_xpath(xpath, visible: nil, hidden: nil, timeout: nil) ⇒ Object
1103 1104 1105 |
# File 'lib/puppeteer/page.rb', line 1103 def wait_for_xpath(xpath, visible: nil, hidden: nil, timeout: nil) main_frame.wait_for_xpath(xpath, visible: visible, hidden: hidden, timeout: timeout) end |
#workers ⇒ Object
275 276 277 |
# File 'lib/puppeteer/page.rb', line 275 def workers @workers.values end |