点击带有水豚的元素

时间:2012-07-17 16:14:03

标签: ruby-on-rails ruby capybara

我在需要与之交互的网页上有一个是/否滑块。我需要单击其中一个元素,以便值从true变为false或false变为true。使用id我可以使用

获取元素的值
find_field('passcode_policies__allow_simple').find('option[selected]').value

但是我一遍又一遍地试图模拟对这个对象的点击来改变价值并且不成功。

<div class="control-group">
  <select class="toggle" id="passcode_policies__allow_simple" name="passcode_policies[][allow_simple]" style="display: none; " tabindex="-1">
    <option value="true" selected="selected">Yes</option>
    <option value="false">No</option>
  </select>
  <div class="ui-switch off" tabindex="0">                                 
    <div class="ui-switch-mask">                          
      <div class="ui-switch-master" style="left: -38px; ">                      
        <div class="ui-switch-upper">                     
          <span class="ui-switch-handle" style="left: 33px; "></span>          
        </div>                                            
        <div class="ui-switch-lower">                     
          <div class="ui-switch-labels">                  
            <a href="#" class="ui-switch-on" style="width: 17px; " tabindex="-1">Yes</a>   
            <a href="#" class="ui-switch-off" style="width: 17px; " tabindex="-1">No</a> 
          </div>                                          
        </div>                                            
      </div>                                              
    </div>                                                
    <div class="ui-switch-middle" style="width: 60px; ">
    </div>                  
  </div>
  <label class="inline">Allow simple value</label>
  <span class="help-block">Permit the use of repeating, ascending, and descending character sequences</span>
</div>

2 个答案:

答案 0 :(得分:0)

如果您正在使用Selenium,无头webkit或phantomjs(poltergeist gem),您应该可以调用简单的

click_link 'Yes'

但是如果你只是直接使用水豚,你将不得不与选择元素进行交互

select('Yes', :from => 'passcode_policies__allow_simple')

您可以使用此capybara: page.should have_no_content doesn't work correctly for display:none element

查看可见性和诸如此类的内容

答案 1 :(得分:0)

工作解决方案:

within(:css, '#passcode_policies__allow_simple + .ui-switch') do
  click_link 'No'
end