File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -95,6 +95,22 @@ def body
95
95
evaluate ( "document.documentElement?.outerHTML" ) || ""
96
96
end
97
97
98
+ #
99
+ # Returns the element in which the window is embedded.
100
+ #
101
+ # @return [Node, nil]
102
+ # The element in which the window is embedded.
103
+ #
104
+ # @example
105
+ # browser.go_to("https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe")
106
+ # frame = browser.frames.last
107
+ # frame.frame_element # => [Node]
108
+ # frame.parent.parent.parent.frame_element # => nil
109
+ #
110
+ def frame_element
111
+ evaluate ( "window.frameElement" )
112
+ end
113
+
98
114
#
99
115
# Finds nodes by using a XPath selector.
100
116
#
Original file line number Diff line number Diff line change 205
205
expect ( page . doctype ) . to be_nil
206
206
end
207
207
208
+ context "#frame_element" do
209
+ it "gets the frame element" do
210
+ page . go_to ( "/frames" )
211
+
212
+ frame_element = page . at_xpath ( "//iframe" )
213
+ frame = frame_element . frame
214
+ expect ( frame . frame_element ) . to eq ( frame_element )
215
+ expect ( frame . frame_element . frame_id ) . to eq frame . id
216
+ expect ( frame . frame_element . attribute ( :src ) ) . to end_with ( "/slow" )
217
+ end
218
+
219
+ it "returns nil if main frame" do
220
+ page . go_to ( "/frames" )
221
+
222
+ parent_frame = page . at_xpath ( "//iframe" ) . frame . parent
223
+ expect ( parent_frame ) . to be_main
224
+ expect ( parent_frame . frame_element ) . to be_nil
225
+ end
226
+
227
+ it "supports nested frames" do
228
+ page . go_to ( "/frames" )
229
+ page . execute <<-JS
230
+ document.body.innerHTML += "<iframe src='/nested_frame_test' name='outer_frame' style='padding:200px'>"
231
+ JS
232
+ page . network . wait_for_idle
233
+
234
+ outer_frame_element = page . at_xpath ( "//iframe[@name='outer_frame']" )
235
+ outer_frame = outer_frame_element . frame
236
+
237
+ inner_frame_element = outer_frame . at_xpath ( "//iframe" )
238
+ inner_frame = inner_frame_element . frame
239
+
240
+ expect ( outer_frame . frame_element ) . to eq ( outer_frame_element )
241
+ expect ( inner_frame . frame_element ) . to eq ( inner_frame_element )
242
+ end
243
+ end
244
+
208
245
context "#xpath" do
209
246
it "returns given nodes" do
210
247
page . go_to ( "/with_js" )
You can’t perform that action at this time.
0 commit comments