@@ -82,7 +82,7 @@ def __init__(
82
82
self ._url = initializer ["url" ]
83
83
self ._detached = False
84
84
self ._child_frames : List [Frame ] = []
85
- self ._page : " Page"
85
+ self ._page : Optional [ Page ] = None
86
86
self ._load_states : Set [str ] = set (initializer ["loadStates" ])
87
87
self ._event_emitter = EventEmitter ()
88
88
self ._channel .on (
@@ -105,33 +105,24 @@ def _on_load_state(
105
105
self ._event_emitter .emit ("loadstate" , add )
106
106
elif remove and remove in self ._load_states :
107
107
self ._load_states .remove (remove )
108
- if (
109
- not self ._parent_frame
110
- and add == "load"
111
- and hasattr (self , "_page" )
112
- and self ._page
113
- ):
108
+ if not self ._parent_frame and add == "load" and self ._page :
114
109
self ._page .emit ("load" , self ._page )
115
- if (
116
- not self ._parent_frame
117
- and add == "domcontentloaded"
118
- and hasattr (self , "_page" )
119
- and self ._page
120
- ):
110
+ if not self ._parent_frame and add == "domcontentloaded" and self ._page :
121
111
self ._page .emit ("domcontentloaded" , self ._page )
122
112
123
113
def _on_frame_navigated (self , event : FrameNavigatedEvent ) -> None :
124
114
self ._url = event ["url" ]
125
115
self ._name = event ["name" ]
126
116
self ._event_emitter .emit ("navigated" , event )
127
- if "error" not in event and hasattr ( self , "_page" ) and self ._page :
117
+ if "error" not in event and self ._page :
128
118
self ._page .emit ("framenavigated" , self )
129
119
130
120
async def _query_count (self , selector : str ) -> int :
131
121
return await self ._channel .send ("queryCount" , {"selector" : selector })
132
122
133
123
@property
134
124
def page (self ) -> "Page" :
125
+ assert self ._page
135
126
return self ._page
136
127
137
128
async def goto (
@@ -151,6 +142,7 @@ async def goto(
151
142
def _setup_navigation_wait_helper (
152
143
self , wait_name : str , timeout : float = None
153
144
) -> WaitHelper :
145
+ assert self ._page
154
146
wait_helper = WaitHelper (self ._page , f"frame.{ wait_name } " )
155
147
wait_helper .reject_on_event (
156
148
self ._page , "close" , Error ("Navigation failed because page was closed!" )
@@ -175,6 +167,7 @@ def expect_navigation(
175
167
wait_until : DocumentLoadState = None ,
176
168
timeout : float = None ,
177
169
) -> EventContextManagerImpl [Response ]:
170
+ assert self ._page
178
171
if not wait_until :
179
172
wait_until = "load"
180
173
@@ -225,6 +218,7 @@ async def wait_for_url(
225
218
wait_until : DocumentLoadState = None ,
226
219
timeout : float = None ,
227
220
) -> None :
221
+ assert self ._page
228
222
matcher = URLMatcher (self ._page ._browser_context ._options .get ("baseURL" ), url )
229
223
if matcher .matches (self .url ):
230
224
await self ._wait_for_load_state_impl (state = wait_until , timeout = timeout )
0 commit comments