spec/watirspec/elements/frame_spec.rb in watir-7.2.0 vs spec/watirspec/elements/frame_spec.rb in watir-7.2.1
- old
+ new
@@ -4,112 +4,114 @@
#
# TODO: fix duplication with iframe_spec
#
-describe 'Frame' do
- before :each do
- browser.goto(WatirSpec.url_for('frames.html'))
- end
-
- it 'handles crossframe javascript' do
- expect(browser.frame(id: 'frame_1').text_field(name: 'senderElement').value).to eq 'send_this_value'
- expect(browser.frame(id: 'frame_2').text_field(name: 'recieverElement').value).to eq 'old_value'
- browser.frame(id: 'frame_1').button(id: 'send').click
- expect(browser.frame(id: 'frame_2').text_field(name: 'recieverElement').value).to eq 'send_this_value'
- end
-
- describe '#exist?' do
- it 'returns true if the frame exists' do
- expect(browser.frame(id: 'frame_1')).to exist
- expect(browser.frame(name: 'frame1')).to exist
- expect(browser.frame(index: 0)).to exist
- expect(browser.frame(class: 'half')).to exist
- expect(browser.frame(xpath: "//frame[@id='frame_1']")).to exist
- expect(browser.frame(src: 'frame_1.html')).to exist
- expect(browser.frame(id: /frame/)).to exist
- expect(browser.frame(name: /frame/)).to exist
- expect(browser.frame(src: /frame_1/)).to exist
- expect(browser.frame(class: /half/)).to exist
+module Watir
+ describe Frame do
+ before do
+ browser.goto(WatirSpec.url_for('frames.html'))
end
- it 'returns the first frame if given no args' do
- expect(browser.frame).to exist
+ it 'handles crossframe javascript' do
+ expect(browser.frame(id: 'frame_1').text_field(name: 'senderElement').value).to eq 'send_this_value'
+ expect(browser.frame(id: 'frame_2').text_field(name: 'recieverElement').value).to eq 'old_value'
+ browser.frame(id: 'frame_1').button(id: 'send').click
+ expect(browser.frame(id: 'frame_2').text_field(name: 'recieverElement').value).to eq 'send_this_value'
end
- it "returns false if the frame doesn't exist" do
- expect(browser.frame(id: 'no_such_id')).to_not exist
- expect(browser.frame(name: 'no_such_text')).to_not exist
- expect(browser.frame(index: 1337)).to_not exist
- expect(browser.frame(src: 'no_such_src')).to_not exist
- expect(browser.frame(class: 'no_such_class')).to_not exist
- expect(browser.frame(id: /no_such_id/)).to_not exist
- expect(browser.frame(name: /no_such_text/)).to_not exist
- expect(browser.frame(src: /no_such_src/)).to_not exist
- expect(browser.frame(class: /no_such_class/)).to_not exist
- expect(browser.frame(xpath: "//frame[@id='no_such_id']")).to_not exist
- end
+ describe '#exist?' do
+ it 'returns true if the frame exists' do
+ expect(browser.frame(id: 'frame_1')).to exist
+ expect(browser.frame(name: 'frame1')).to exist
+ expect(browser.frame(index: 0)).to exist
+ expect(browser.frame(class: 'half')).to exist
+ expect(browser.frame(xpath: "//frame[@id='frame_1']")).to exist
+ expect(browser.frame(src: 'frame_1.html')).to exist
+ expect(browser.frame(id: /frame/)).to exist
+ expect(browser.frame(name: /frame/)).to exist
+ expect(browser.frame(src: /frame_1/)).to exist
+ expect(browser.frame(class: /half/)).to exist
+ end
- it 'handles nested frames' do
- browser.goto(WatirSpec.url_for('nested_frames.html'))
+ it 'returns the first frame if given no args' do
+ expect(browser.frame).to exist
+ end
- browser.frame(id: 'two').frame(id: 'three').link(id: 'four').click
+ it "returns false if the frame doesn't exist" do
+ expect(browser.frame(id: 'no_such_id')).not_to exist
+ expect(browser.frame(name: 'no_such_text')).not_to exist
+ expect(browser.frame(index: 1337)).not_to exist
+ expect(browser.frame(src: 'no_such_src')).not_to exist
+ expect(browser.frame(class: 'no_such_class')).not_to exist
+ expect(browser.frame(id: /no_such_id/)).not_to exist
+ expect(browser.frame(name: /no_such_text/)).not_to exist
+ expect(browser.frame(src: /no_such_src/)).not_to exist
+ expect(browser.frame(class: /no_such_class/)).not_to exist
+ expect(browser.frame(xpath: "//frame[@id='no_such_id']")).not_to exist
+ end
- browser.wait_until(title: 'definition_lists')
- expect { browser.goto(WatirSpec.url_for('nested_frames.html')) }.to_not raise_exception
+ it 'handles nested frames' do
+ browser.goto(WatirSpec.url_for('nested_frames.html'))
+
+ browser.frame(id: 'two').frame(id: 'three').link(id: 'four').click
+
+ browser.wait_until(title: 'definition_lists')
+ expect { browser.goto(WatirSpec.url_for('nested_frames.html')) }.not_to raise_exception
+ end
+
+ it "raises TypeError when 'what' argument is invalid" do
+ expect { browser.frame(id: 3.14).exists? }.to raise_error(TypeError)
+ end
end
- it "raises TypeError when 'what' argument is invalid" do
- expect { browser.frame(id: 3.14).exists? }.to raise_error(TypeError)
+ it 'raises UnknownFrameException when accessing elements inside non-existing frame' do
+ expect { browser.frame(name: 'no_such_name').p(index: 0).id }.to raise_unknown_frame_exception
end
- end
- it 'raises UnknownFrameException when accessing elements inside non-existing frame' do
- expect { browser.frame(name: 'no_such_name').p(index: 0).id }.to raise_unknown_frame_exception
- end
+ it 'raises UnknownFrameException when accessing a non-existing frame' do
+ expect { browser.frame(name: 'no_such_name').id }.to raise_unknown_frame_exception
+ end
- it 'raises UnknownFrameException when accessing a non-existing frame' do
- expect { browser.frame(name: 'no_such_name').id }.to raise_unknown_frame_exception
- end
+ it 'raises UnknownFrameException when accessing a non-existing subframe' do
+ expect { browser.frame(name: 'frame1').frame(name: 'no_such_name').id }.to raise_unknown_frame_exception
+ end
- it 'raises UnknownFrameException when accessing a non-existing subframe' do
- expect { browser.frame(name: 'frame1').frame(name: 'no_such_name').id }.to raise_unknown_frame_exception
- end
+ it 'raises UnknownObjectException when accessing a non-existing element inside an existing frame' do
+ expect { browser.frame(index: 0).p(index: 1337).id }.to raise_unknown_object_exception
+ end
- it 'raises UnknownObjectException when accessing a non-existing element inside an existing frame' do
- expect { browser.frame(index: 0).p(index: 1337).id }.to raise_unknown_object_exception
- end
+ it "raises NoMethodError when trying to access attributes it doesn't have" do
+ expect { browser.frame(index: 0).foo }.to raise_error(NoMethodError)
+ end
- it "raises NoMethodError when trying to access attributes it doesn't have" do
- expect { browser.frame(index: 0).foo }.to raise_error(NoMethodError)
- end
+ it 'is able to set a field' do
+ browser.frame(index: 0).text_field(name: 'senderElement').set('new value')
+ expect(browser.frame(index: 0).text_field(name: 'senderElement').value).to eq 'new value'
+ end
- it 'is able to set a field' do
- browser.frame(index: 0).text_field(name: 'senderElement').set('new value')
- expect(browser.frame(index: 0).text_field(name: 'senderElement').value).to eq 'new value'
- end
+ it "can access the frame's parent element after use" do
+ el = browser.frameset
+ el.frame.text_field.value
+ expect(el.attribute_value('cols')).to be_a(String)
+ end
- it "can access the frame's parent element after use" do
- el = browser.frameset
- el.frame.text_field.value
- expect(el.attribute_value('cols')).to be_kind_of(String)
- end
-
- describe '#execute_script' do
- it 'executes the given javascript in the specified frame',
- except: {browser: :safari, reason: 'Safari does not strip text'} do
- frame = browser.frame(index: 0)
- expect(frame.div(id: 'set_by_js').text).to eq ''
- inner_html = 'Art consists of limitation. The most beautiful part of every picture is the frame.'
- frame.execute_script(%{document.getElementById('set_by_js').innerHTML = '#{inner_html}'})
- text = 'Art consists of limitation. The most beautiful part of every picture is the frame.'
- expect(frame.div(id: 'set_by_js').text).to eq text
+ describe '#execute_script' do
+ it 'executes the given javascript in the specified frame',
+ except: {browser: :safari, reason: 'Safari does not strip text'} do
+ frame = browser.frame(index: 0)
+ expect(frame.div(id: 'set_by_js').text).to eq ''
+ inner_html = 'Art consists of limitation. The most beautiful part of every picture is the frame.'
+ frame.execute_script(%{document.getElementById('set_by_js').innerHTML = '#{inner_html}'})
+ text = 'Art consists of limitation. The most beautiful part of every picture is the frame.'
+ expect(frame.div(id: 'set_by_js').text).to eq text
+ end
end
- end
- describe '#html' do
- it 'returns the full HTML source of the frame' do
- browser.goto WatirSpec.url_for('frames.html')
- expect(browser.frame.html.downcase).to include('<title>frame 1</title>')
+ describe '#html' do
+ it 'returns the full HTML source of the frame' do
+ browser.goto WatirSpec.url_for('frames.html')
+ expect(browser.frame.html.downcase).to include('<title>frame 1</title>')
+ end
end
end
end