#![allow(clippy::all, missing_docs, unused_imports)]
use serde::{Deserialize, Serialize};
use super::*;
use crate::playwright::connection::{
Binary, Channel, ChannelType, ObjectRef, ProtocolError, ProtocolEvent, Ref,
};
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameWaitForFunctionParams {
#[serde(rename = "expression")]
pub expression: String,
#[serde(rename = "isFunction", default, skip_serializing_if = "Option::is_none")]
pub is_function: Option<bool>,
#[serde(rename = "arg")]
pub arg: SerializedArgument,
#[serde(rename = "pollingInterval", default, skip_serializing_if = "Option::is_none")]
pub polling_interval: Option<f64>,
#[serde(rename = "selector", default, skip_serializing_if = "Option::is_none")]
pub selector: Option<String>,
#[serde(rename = "strict", default, skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameWaitForFunctionResult {
#[serde(rename = "handle", default, skip_serializing_if = "Option::is_none")]
pub handle: Option<Ref<JSHandle>>,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum FrameWaitForSelectorParamsState {
#[default]
#[serde(rename = "attached")]
Attached,
#[serde(rename = "detached")]
Detached,
#[serde(rename = "visible")]
Visible,
#[serde(rename = "hidden")]
Hidden,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameWaitForSelectorParams {
#[serde(rename = "selector")]
pub selector: String,
#[serde(rename = "strict", default, skip_serializing_if = "Option::is_none")]
pub strict: Option<bool>,
#[serde(rename = "state", default, skip_serializing_if = "Option::is_none")]
pub state: Option<FrameWaitForSelectorParamsState>,
#[serde(rename = "omitReturnValue", default, skip_serializing_if = "Option::is_none")]
pub omit_return_value: Option<bool>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameWaitForSelectorResult {
#[serde(rename = "element", default, skip_serializing_if = "Option::is_none")]
pub element: Option<Ref<ElementHandle>>,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum FrameExpectParamsPseudo {
#[default]
#[serde(rename = "before")]
Before,
#[serde(rename = "after")]
After,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameExpectParams {
#[serde(rename = "selector", default, skip_serializing_if = "Option::is_none")]
pub selector: Option<String>,
#[serde(rename = "expression")]
pub expression: String,
#[serde(rename = "expressionArg", default, skip_serializing_if = "Option::is_none")]
pub expression_arg: Option<serde_json::Value>,
#[serde(rename = "pseudo", default, skip_serializing_if = "Option::is_none")]
pub pseudo: Option<FrameExpectParamsPseudo>,
#[serde(rename = "expectedText", default, skip_serializing_if = "Option::is_none")]
pub expected_text: Option<Vec<ExpectedTextValue>>,
#[serde(rename = "expectedNumber", default, skip_serializing_if = "Option::is_none")]
pub expected_number: Option<f64>,
#[serde(rename = "expectedValue", default, skip_serializing_if = "Option::is_none")]
pub expected_value: Option<SerializedArgument>,
#[serde(rename = "useInnerText", default, skip_serializing_if = "Option::is_none")]
pub use_inner_text: Option<bool>,
#[serde(rename = "isNot")]
pub is_not: bool,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameLoadstateEventParams {
#[serde(rename = "add", default, skip_serializing_if = "Option::is_none")]
pub add: Option<LifecycleEvent>,
#[serde(rename = "remove", default, skip_serializing_if = "Option::is_none")]
pub remove: Option<LifecycleEvent>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameNavigatedEventParamsNewDocument {
#[serde(rename = "request", default, skip_serializing_if = "Option::is_none")]
pub request: Option<Ref<Request>>,
}
#[derive(Debug, Clone, Default, PartialEq, Serialize, Deserialize)]
pub struct FrameNavigatedEventParams {
#[serde(rename = "url")]
pub url: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "newDocument", default, skip_serializing_if = "Option::is_none")]
pub new_document: Option<FrameNavigatedEventParamsNewDocument>,
#[serde(rename = "error", default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
}
#[derive(Debug, Clone, PartialEq)]
pub enum FrameEvent {
Loadstate(FrameLoadstateEventParams),
Navigated(FrameNavigatedEventParams),
Unknown {
method: String,
params: serde_json::Value,
},
}
impl ProtocolEvent for FrameEvent {
fn parse(method: &str, params: serde_json::Value) -> Result<Self, serde_json::Error> {
match method {
"loadstate" => Ok(Self::Loadstate(serde_json::from_value(params)?)),
"navigated" => Ok(Self::Navigated(serde_json::from_value(params)?)),
_ => Ok(Self::Unknown { method: method.to_string(), params }),
}
}
}
#[derive(Debug, Clone)]
pub struct Frame {
channel: Channel,
}
impl ChannelType for Frame {
const INTERFACE: &'static str = "Frame";
type Initializer = FrameInitializer;
type Event = FrameEvent;
fn accepts(interface: &str) -> bool {
matches!(interface, "Frame")
}
fn from_channel(channel: Channel) -> Self {
Self { channel }
}
fn channel(&self) -> &Channel {
&self.channel
}
}
impl Frame {
pub async fn eval_on_selector(&self, params: FrameEvalOnSelectorParams) -> Result<FrameEvalOnSelectorResult, ProtocolError> {
self.channel.send("evalOnSelector", ¶ms).await
}
pub async fn eval_on_selector_all(&self, params: FrameEvalOnSelectorAllParams) -> Result<FrameEvalOnSelectorAllResult, ProtocolError> {
self.channel.send("evalOnSelectorAll", ¶ms).await
}
pub async fn add_script_tag(&self, params: FrameAddScriptTagParams) -> Result<FrameAddScriptTagResult, ProtocolError> {
self.channel.send("addScriptTag", ¶ms).await
}
pub async fn add_style_tag(&self, params: FrameAddStyleTagParams) -> Result<FrameAddStyleTagResult, ProtocolError> {
self.channel.send("addStyleTag", ¶ms).await
}
pub async fn aria_snapshot(&self, params: FrameAriaSnapshotParams) -> Result<FrameAriaSnapshotResult, ProtocolError> {
self.channel.send("ariaSnapshot", ¶ms).await
}
pub async fn blur(&self, params: FrameBlurParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("blur", ¶ms).await
}
pub async fn check(&self, params: FrameCheckParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("check", ¶ms).await
}
pub async fn click(&self, params: FrameClickParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("click", ¶ms).await
}
pub async fn content(&self) -> Result<FrameContentResult, ProtocolError> {
self.channel.send("content", &serde_json::json!({})).await
}
pub async fn drag_and_drop(&self, params: FrameDragAndDropParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("dragAndDrop", ¶ms).await
}
pub async fn drop(&self, params: FrameDropParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("drop", ¶ms).await
}
pub async fn dblclick(&self, params: FrameDblclickParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("dblclick", ¶ms).await
}
pub async fn dispatch_event(&self, params: FrameDispatchEventParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("dispatchEvent", ¶ms).await
}
pub async fn evaluate_expression(&self, params: FrameEvaluateExpressionParams) -> Result<FrameEvaluateExpressionResult, ProtocolError> {
self.channel.send("evaluateExpression", ¶ms).await
}
pub async fn evaluate_expression_handle(&self, params: FrameEvaluateExpressionHandleParams) -> Result<FrameEvaluateExpressionHandleResult, ProtocolError> {
self.channel.send("evaluateExpressionHandle", ¶ms).await
}
pub async fn fill(&self, params: FrameFillParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("fill", ¶ms).await
}
pub async fn focus(&self, params: FrameFocusParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("focus", ¶ms).await
}
pub async fn frame_element(&self) -> Result<FrameFrameElementResult, ProtocolError> {
self.channel.send("frameElement", &serde_json::json!({})).await
}
pub async fn resolve_selector(&self, params: FrameResolveSelectorParams) -> Result<FrameResolveSelectorResult, ProtocolError> {
self.channel.send("resolveSelector", ¶ms).await
}
pub async fn highlight(&self, params: FrameHighlightParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("highlight", ¶ms).await
}
pub async fn hide_highlight(&self, params: FrameHideHighlightParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("hideHighlight", ¶ms).await
}
pub async fn get_attribute(&self, params: FrameGetAttributeParams) -> Result<FrameGetAttributeResult, ProtocolError> {
self.channel.send("getAttribute", ¶ms).await
}
pub async fn goto(&self, params: FrameGotoParams) -> Result<FrameGotoResult, ProtocolError> {
self.channel.send("goto", ¶ms).await
}
pub async fn hover(&self, params: FrameHoverParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("hover", ¶ms).await
}
pub async fn inner_html(&self, params: FrameInnerHTMLParams) -> Result<FrameInnerHTMLResult, ProtocolError> {
self.channel.send("innerHTML", ¶ms).await
}
pub async fn inner_text(&self, params: FrameInnerTextParams) -> Result<FrameInnerTextResult, ProtocolError> {
self.channel.send("innerText", ¶ms).await
}
pub async fn input_value(&self, params: FrameInputValueParams) -> Result<FrameInputValueResult, ProtocolError> {
self.channel.send("inputValue", ¶ms).await
}
pub async fn is_checked(&self, params: FrameIsCheckedParams) -> Result<FrameIsCheckedResult, ProtocolError> {
self.channel.send("isChecked", ¶ms).await
}
pub async fn is_disabled(&self, params: FrameIsDisabledParams) -> Result<FrameIsDisabledResult, ProtocolError> {
self.channel.send("isDisabled", ¶ms).await
}
pub async fn is_enabled(&self, params: FrameIsEnabledParams) -> Result<FrameIsEnabledResult, ProtocolError> {
self.channel.send("isEnabled", ¶ms).await
}
pub async fn is_hidden(&self, params: FrameIsHiddenParams) -> Result<FrameIsHiddenResult, ProtocolError> {
self.channel.send("isHidden", ¶ms).await
}
pub async fn is_visible(&self, params: FrameIsVisibleParams) -> Result<FrameIsVisibleResult, ProtocolError> {
self.channel.send("isVisible", ¶ms).await
}
pub async fn is_editable(&self, params: FrameIsEditableParams) -> Result<FrameIsEditableResult, ProtocolError> {
self.channel.send("isEditable", ¶ms).await
}
pub async fn press(&self, params: FramePressParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("press", ¶ms).await
}
pub async fn query_selector(&self, params: FrameQuerySelectorParams) -> Result<FrameQuerySelectorResult, ProtocolError> {
self.channel.send("querySelector", ¶ms).await
}
pub async fn query_selector_all(&self, params: FrameQuerySelectorAllParams) -> Result<FrameQuerySelectorAllResult, ProtocolError> {
self.channel.send("querySelectorAll", ¶ms).await
}
pub async fn query_count(&self, params: FrameQueryCountParams) -> Result<FrameQueryCountResult, ProtocolError> {
self.channel.send("queryCount", ¶ms).await
}
pub async fn select_option(&self, params: FrameSelectOptionParams) -> Result<FrameSelectOptionResult, ProtocolError> {
self.channel.send("selectOption", ¶ms).await
}
pub async fn set_content(&self, params: FrameSetContentParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setContent", ¶ms).await
}
pub async fn set_input_files(&self, params: FrameSetInputFilesParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("setInputFiles", ¶ms).await
}
pub async fn tap(&self, params: FrameTapParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("tap", ¶ms).await
}
pub async fn text_content(&self, params: FrameTextContentParams) -> Result<FrameTextContentResult, ProtocolError> {
self.channel.send("textContent", ¶ms).await
}
pub async fn title(&self) -> Result<FrameTitleResult, ProtocolError> {
self.channel.send("title", &serde_json::json!({})).await
}
pub async fn r#type(&self, params: FrameTypeParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("type", ¶ms).await
}
pub async fn uncheck(&self, params: FrameUncheckParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("uncheck", ¶ms).await
}
pub async fn wait_for_timeout(&self, params: FrameWaitForTimeoutParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("waitForTimeout", ¶ms).await
}
pub async fn wait_for_function(&self, params: FrameWaitForFunctionParams) -> Result<FrameWaitForFunctionResult, ProtocolError> {
self.channel.send("waitForFunction", ¶ms).await
}
pub async fn wait_for_selector(&self, params: FrameWaitForSelectorParams) -> Result<FrameWaitForSelectorResult, ProtocolError> {
self.channel.send("waitForSelector", ¶ms).await
}
pub async fn expect(&self, params: FrameExpectParams) -> Result<(), ProtocolError> {
self.channel.send_no_result("expect", ¶ms).await
}
}