There are many times when we want to restrict our search to a particular section and not on the whole page. This will basically decrease the search time and will also help in uniquely identifying the desired element. Capybara provides within method through which we can restrict our scope of search. Let's suppose we have the following HTML:
<div>
<ul id ="menu1" class="bottomNavList" style="clear: both;margin-bottom:0;">
<li class="myContent">My Content </li>
<li class="recordDesktopList myReports">My Reports</li>
<li class="recordDesktopList myReports activePro">My Active Projects</li>
<li class="blankBg hireProject">Hire</li>
</ul>
<ul id ="menu2" class="bottomNavList" style="clear: both;margin-bottom:0;">
<li class="recordDesktopList">Post Projects</li>
<li class="postBlogsTech browzNerd">Browse Nerds</li>
<li class="blankBg workProject">Work</li>
<li class="projectFind">Find Projects</li>
</ul>
</div>
Now, we want to locate "My Content" section, so we can restrict our scope within "menu1" section to increase the efficiency of search.
within ('#menu1') do
content = @session.find('.myContent').text
puts "Value = #{content}"
end
end
Capybara also provides some element specific within method:
- within_frame
- within_fieldset
- within_window
- within_table
within_frame: This method will restrict the search scope within the given iframe only.
within_frame(frame_id)
Eg:
within_frame 'mainiframe' do
content = @session.find('.myContent').text
puts "Value = #{content}"
end
within_fieldset: This method will restrict the search scope within the given iframe only.
within_window: This method will restrict the search scope within the given window only.
within_table: This method will restrict the search scope within the given table only.
0 Comment(s)