Skip to content

Commit 76669f0

Browse files
authored
Enable access to iframes on api (#167)
* Enable access to iframes on api * changeset
1 parent 71c8437 commit 76669f0

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"stagehand": patch
3+
---
4+
5+
Enable access to iframes on api

stagehand/page.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,14 @@ async def act(
137137
elif isinstance(action_or_result, ActOptions):
138138
payload = action_or_result.model_dump(exclude_none=True, by_alias=True)
139139
elif isinstance(action_or_result, dict):
140-
payload = ObserveResult(**action_or_result).model_dump(
141-
exclude_none=True, by_alias=True
142-
)
140+
if "description" in action_or_result:
141+
payload = ObserveResult(**action_or_result).model_dump(
142+
exclude_none=True, by_alias=True
143+
)
144+
else:
145+
payload = ActOptions(**action_or_result).model_dump(
146+
exclude_none=True, by_alias=True
147+
)
143148
else:
144149
raise TypeError(
145150
"Invalid arguments for 'act'. Expected str, ObserveResult, or ActOptions."
@@ -156,6 +161,10 @@ async def act(
156161
self, self._stagehand, "", self._stagehand.self_heal
157162
)
158163
self._stagehand.logger.debug("act", category="act", auxiliary=payload)
164+
if payload.get("iframes"):
165+
raise ValueError(
166+
"iframes is not yet supported without API (to enable make sure you set env=BROWSERBASE and use_api=true)"
167+
)
159168
result = await self._act_handler.act(payload)
160169
return result
161170

stagehand/schemas.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ class ActOptions(StagehandBaseModel):
5353
dom_settle_timeout_ms: Optional[int] = None
5454
timeout_ms: Optional[int] = None
5555
model_client_options: Optional[dict[str, Any]] = None
56+
iframes: Optional[bool] = None
5657

5758

5859
class ActResult(StagehandBaseModel):
@@ -98,6 +99,7 @@ class ExtractOptions(StagehandBaseModel):
9899
use_text_extract: Optional[bool] = None
99100
dom_settle_timeout_ms: Optional[int] = None
100101
model_client_options: Optional[dict[Any, Any]] = None
102+
iframes: Optional[bool] = None
101103

102104
@field_serializer("schema_definition")
103105
def serialize_schema_definition(
@@ -196,6 +198,7 @@ class ObserveOptions(StagehandBaseModel):
196198
draw_overlay: Optional[bool] = None
197199
dom_settle_timeout_ms: Optional[int] = None
198200
model_client_options: Optional[dict[str, Any]] = None
201+
iframes: Optional[bool] = None
199202

200203

201204
class ObserveResult(StagehandBaseModel):

0 commit comments

Comments
 (0)