pub struct Page { /* private fields */ }Expand description
Page 本地状态(核心类)。
持有:target_id、main_frame、frame tree、本地实例(mouse/keyboard/…)、 EventEmitter inner、默认 timeout、opener weak、context 弱引用、 Connection 引用(共享,所有 Page 共用同一 CDP 连接)。
@trace REQ-BAO-API-006 [class:Page]
Implementations§
Source§impl Page
impl Page
Sourcepub fn new(target_id: impl Into<String>, context: Weak<BrowserContext>) -> Page
pub fn new(target_id: impl Into<String>, context: Weak<BrowserContext>) -> Page
构造 Page(由 BrowserContext::new_page 调用)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn new_with_connection(
target_id: impl Into<String>,
context: Weak<BrowserContext>,
connection: Option<Rc<RefCell<Connection>>>,
) -> Page
pub fn new_with_connection( target_id: impl Into<String>, context: Weak<BrowserContext>, connection: Option<Rc<RefCell<Connection>>>, ) -> Page
构造 Page 并绑定 Connection(共享引用)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_closed(&self, v: bool)
pub fn set_closed(&self, v: bool)
标记关闭(本地状态)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn is_service_worker(&self) -> bool
pub fn is_service_worker(&self) -> bool
是否 service worker。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_is_service_worker(&self, v: bool)
pub fn set_is_service_worker(&self, v: bool)
设置 is_service_worker(targetCreated 时根据 type 填入)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn main_frame(&self) -> Rc<Frame>
pub fn main_frame(&self) -> Rc<Frame>
主 Frame(Rc clone)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn frames_count(&self) -> usize
pub fn frames_count(&self) -> usize
Frame 总数。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn frame_by_id(&self, id: &str) -> Option<Rc<Frame>>
pub fn frame_by_id(&self, id: &str) -> Option<Rc<Frame>>
按 ID 查找 frame。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn add_frame(&self, id: impl Into<String>, frame: Rc<Frame>)
pub fn add_frame(&self, id: impl Into<String>, frame: Rc<Frame>)
添加 frame(frameAttached 事件触发)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn remove_frame(&self, id: &str)
pub fn remove_frame(&self, id: &str)
移除 frame(frameDetached 事件触发)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn workers_count(&self) -> usize
pub fn workers_count(&self) -> usize
Worker 数量。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn add_worker(&self, w: Worker)
pub fn add_worker(&self, w: Worker)
添加 worker(attachedToTarget 事件触发)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn viewport_size(&self) -> Option<(u32, u32)>
pub fn viewport_size(&self) -> Option<(u32, u32)>
Viewport size(Width, Height)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_viewport(&self, v: Viewport)
pub fn set_viewport(&self, v: Viewport)
设置 viewport(本地缓存;setViewport 命令成功后调用)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn target_info(&self) -> TargetInfo
pub fn target_info(&self) -> TargetInfo
TargetInfo(本地缓存克隆)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_target_info(&self, info: TargetInfo)
pub fn set_target_info(&self, info: TargetInfo)
设置 target info。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn target(&self) -> Ref<'_, TargetInfo>
pub fn target(&self) -> Ref<'_, TargetInfo>
引用 target info(避免 clone)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn touchscreen(&self) -> &Touchscreen
pub fn touchscreen(&self) -> &Touchscreen
引用 touchscreen。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn accessibility(&self) -> &Accessibility
pub fn accessibility(&self) -> &Accessibility
引用 accessibility。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn default_timeout(&self) -> Option<Duration>
pub fn default_timeout(&self) -> Option<Duration>
默认 timeout(Page.$ 等命令使用)。
@trace REQ-BAO-API-006 [class:Page]
默认 navigation timeout。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_default_timeout(&self, ms: u64)
pub fn set_default_timeout(&self, ms: u64)
设置默认 timeout。
@trace REQ-BAO-API-006 [class:Page]
设置默认 navigation timeout。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn clear_default_timeout(&self)
pub fn clear_default_timeout(&self)
清除默认 timeout。
@trace REQ-BAO-API-006 [class:Page]
清除默认 navigation timeout。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn opener(&self) -> Option<Rc<Page>>
pub fn opener(&self) -> Option<Rc<Page>>
Opener Page(weak,可能已 drop)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_opener(&self, opener: Weak<Page>)
pub fn set_opener(&self, opener: Weak<Page>)
设置 opener。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn browser_context(&self) -> Option<Rc<BrowserContext>>
pub fn browser_context(&self) -> Option<Rc<BrowserContext>>
所属 BrowserContext(weak upgrade)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn browser(&self) -> Option<Rc<Browser>>
pub fn browser(&self) -> Option<Rc<Browser>>
所属 Browser(context → browser)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_url(&self, url: impl Into<String>)
pub fn set_url(&self, url: impl Into<String>)
设置主 frame URL(frameNavigated 事件触发)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn events_inner(&self) -> &Rc<EventEmitterInner>
pub fn events_inner(&self) -> &Rc<EventEmitterInner>
引用 EventEmitter inner(测试用)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn has_connection(&self) -> bool
pub fn has_connection(&self) -> bool
是否绑定 Connection(可发送 CDP 命令)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_connection(&self, conn: Rc<RefCell<Connection>>)
pub fn set_connection(&self, conn: Rc<RefCell<Connection>>)
设置 Connection(共享引用)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn goto(&self, url: &str) -> Result<Value, CdpError>
pub fn goto(&self, url: &str) -> Result<Value, CdpError>
导航到指定 URL(CDP Page.navigate)。
§错误
CdpError::ConnectionClosed: 未绑定 Connection 或连接已断开CdpError::ProtocolError: 导航失败(无效 URL / 网络错误)
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn evaluate(&self, expression: &str) -> Result<Value, CdpError>
pub fn evaluate(&self, expression: &str) -> Result<Value, CdpError>
在页面上下文中执行 JavaScript 表达式(CDP Runtime.evaluate)。
§错误
CdpError::ConnectionClosed: 未绑定 ConnectionCdpError::ProtocolError: JS 执行异常
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn screenshot(&self) -> Result<Value, CdpError>
pub fn screenshot(&self) -> Result<Value, CdpError>
截取页面截图(CDP Page.captureScreenshot)。
返回 base64 编码的截图数据。
§错误
CdpError::ConnectionClosed: 未绑定 Connection
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn screenshot_with_format(&self, format: &str) -> Result<Value, CdpError>
pub fn screenshot_with_format(&self, format: &str) -> Result<Value, CdpError>
截取页面截图(指定格式)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn close(&self) -> Result<Value, CdpError>
pub fn close(&self) -> Result<Value, CdpError>
关闭页面(CDP Page.close)。
同时标记本地 closed = true。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn title(&self) -> Result<String, CdpError>
pub fn title(&self) -> Result<String, CdpError>
获取页面标题(CDP Runtime.evaluate 执行 document.title)。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn set_viewport_cdp(&self, viewport: Viewport) -> Result<Value, CdpError>
pub fn set_viewport_cdp(&self, viewport: Viewport) -> Result<Value, CdpError>
设置页面 Viewport(CDP Emulation.setDeviceMetricsOverride)。
同时更新本地 viewport 缓存。
@trace REQ-BAO-API-006 [class:Page]
Sourcepub fn send_cdp_command(
&self,
method: &str,
params: Value,
) -> Result<Value, CdpError>
pub fn send_cdp_command( &self, method: &str, params: Value, ) -> Result<Value, CdpError>
发送任意 CDP 命令(底层)。
@trace REQ-BAO-API-006 [class:Page]
Trait Implementations§
Source§impl EventEmitter for Page
impl EventEmitter for Page
Source§fn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64
fn on(&self, event: &str, handler: Arc<dyn Fn(&[Value])>) -> u64
Source§fn off(&self, event: &str, handler_id: u64) -> SubscriptionResult
fn off(&self, event: &str, handler_id: u64) -> SubscriptionResult
Source§fn remove_all_listeners(&self, event: Option<&str>)
fn remove_all_listeners(&self, event: Option<&str>)
event=None 时清空所有事件的所有 handler。Source§fn listener_count(&self, event: &str) -> usize
fn listener_count(&self, event: &str) -> usize
Auto Trait Implementations§
impl !Freeze for Page
impl !RefUnwindSafe for Page
impl !Send for Page
impl !Sync for Page
impl !UnwindSafe for Page
impl Unpin for Page
impl UnsafeUnpin for Page
Blanket Implementations§
Source§impl<T> AsCtxPtr for Twhere
T: ?Sized,
impl<T> AsCtxPtr for Twhere
T: ?Sized,
Source§fn as_ctx_ptr(&self) -> *mut Selfwhere
Self: Sized,
fn as_ctx_ptr(&self) -> *mut Selfwhere
Self: Sized,
self’s address as *mut Self for deferred-task / scopeguard /
ref_guard ctx slots. The closures/trampolines deref it as shared
(&*p) — every method they reach is &self post-R-2, so no write
provenance is required; the *mut spelling is purely to match the
existing DerefOnDrop / HasAutoFlush / RefCount ABI.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more