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
- #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_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.
988 989 990 |
# File 'lib/puppeteer/page.rb', line 988 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.
814 815 816 |
# File 'lib/puppeteer/page.rb', line 814 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 |
#cache_enabled=(enabled) ⇒ Object
835 836 837 |
# File 'lib/puppeteer/page.rb', line 835 def cache_enabled=(enabled) @frame_manager.network_manager.cache_enabled = enabled end |
#click(selector, delay: nil, button: nil, click_count: nil) ⇒ Object
994 995 996 |
# File 'lib/puppeteer/page.rb', line 994 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
970 971 972 973 974 975 976 977 978 979 980 981 |
# File 'lib/puppeteer/page.rb', line 970 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
984 985 986 |
# File 'lib/puppeteer/page.rb', line 984 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
753 754 755 756 |
# File 'lib/puppeteer/page.rb', line 753 def emulate(device) self. = device. self.user_agent = device.user_agent end |
#emulate_timezone(timezone_id) ⇒ Object
797 798 799 800 801 802 803 804 805 |
# File 'lib/puppeteer/page.rb', line 797 def emulate_timezone(timezone_id) @client.('Emulation.setTimezoneOverride', timezoneId: timezoneId || '') 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<*>
819 820 821 |
# File 'lib/puppeteer/page.rb', line 819 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
1001 1002 1003 |
# File 'lib/puppeteer/page.rb', line 1001 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
730 731 732 |
# File 'lib/puppeteer/page.rb', line 730 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
736 737 738 |
# File 'lib/puppeteer/page.rb', line 736 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
1008 1009 1010 |
# File 'lib/puppeteer/page.rb', line 1008 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
957 958 959 960 961 962 963 964 965 966 967 |
# File 'lib/puppeteer/page.rb', line 957 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>}
*/
848 849 850 851 852 853 |
# File 'lib/puppeteer/page.rb', line 848 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>>
1015 1016 1017 |
# File 'lib/puppeteer/page.rb', line 1015 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
1022 1023 1024 |
# File 'lib/puppeteer/page.rb', line 1022 def tap(selector) main_frame.tap(selector) end |
#title ⇒ String
840 841 842 |
# File 'lib/puppeteer/page.rb', line 840 def title main_frame.title end |
#type_text(selector, text, delay: nil) ⇒ Object
1031 1032 1033 |
# File 'lib/puppeteer/page.rb', line 1031 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>
1071 1072 1073 |
# File 'lib/puppeteer/page.rb', line 1071 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
1051 1052 1053 |
# File 'lib/puppeteer/page.rb', line 1051 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
1061 1062 1063 |
# File 'lib/puppeteer/page.rb', line 1061 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 |