【问题标题】:select checkbox with hidden input type选择具有隐藏输入类型的复选框
【发布时间】:2012-05-31 06:59:39
【问题描述】:

伙计们,

我正在使用 watir-webdriver,我的 HTML DOM 中有一个片段,当我输入一些凭据时,它会即时生成,这个片段有一堆复选框,复选框的数量不同,我必须选择一个复选框,下面是一个例子,这里我想选择第二个复选框(输入类型隐藏的值为“BS”但输入类型复选框的值对所有复选框都是相同的):

   <li class="dir">
<input type="checkbox" value="1" onclick="$(this).next('.should_destroy').value = (this.checked?0:1)" name="should_not_destroy">
<input class="should_destroy" type="hidden" value="1" name="import[dir_attributes][][should_destroy]">
<input type="hidden" value="" name="import[dir_attributes][][id]">
<input type="hidden" value="Automation" name="import[dir_attributes][][path]">
<span class="dir_mode">Include</span>
Automation
</li>
<li class="dir">
<input type="checkbox" value="1" onclick="$(this).next('.should_destroy').value = (this.checked?0:1)" name="should_not_destroy">
<input class="should_destroy" type="hidden" value="1" name="import[dir_attributes][][should_destroy]">
<input type="hidden" value="" name="import[dir_attributes][][id]">
<input type="hidden" value="BS" name="import[dir_attributes][][path]">
<span class="dir_mode">Include</span>
BS
</li>

我也许可以用 XPATH 做到这一点,但想尝试非 XPATH 解决方案。隐藏的输入类型具有我需要的适当值,例如,在第二个复选框上方,输入类型隐藏的值为“BS”。我尝试使用这样的隐藏方法:

h  = @@browser.hidden(:value, "BS")
h.select

但我不知道之后该怎么办。我正在尝试根据隐藏元素的值选择复选框。非常感谢任何反馈。

【问题讨论】:

  • 那么您是想从隐藏字段中获取值,还是尝试根据隐藏字段中的值选择复选框?
  • 抱歉不清楚,我正在尝试根据隐藏字段中的值选择复选框
  • 可以安全地假设这是我们必须使用的标记并且您不能进行任何代码级更改吗?
  • 用户如何与隐藏控件交互?您是否打算测试通常不可能的人(例如攻击者)欺骗输入?

标签: ruby-on-rails watir-webdriver


【解决方案1】:

我建议改用可见元素。我认为它更容易阅读测试并且看起来更稳定。

试试:

@@browser.li(:class => 'dir', :text => /BS/).checkbox.set

【讨论】:

    【解决方案2】:

    我们开始吧,我想这样就可以了

    由于您必须根据隐藏来选择复选框,因此您必须上一级到包含的 li,然后向下钻取到复选框

    @browser.hidden(value: 'BS').parent.checkboxes.first.set
    

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      相关资源
      最近更新 更多