【问题标题】:Watir Checkbox LoopWatir 复选框循环
【发布时间】:2014-07-21 10:56:55
【问题描述】:

在下面的page我想测试并选中所有复选框。 但是在第一次复选框测试后我总是会出错。

我的代码:

checkLArr = Array["L1", "L2", "L3", "L4", "L5", "L6", "L7"]
x = 0
for i in 0 .. 7 do
    checkbox = @browser.div(:class => 'check-handler')
    if checkbox.should exist and checkbox.input(:id => "#{checkLArr[x]}").should exist
       puts "GEIL jetzt wird geklickt"
       puts checkLArr[x]
       checkbox.click
       x += 1
    else
       puts "Geht nicht"
    end
 end

错误信息:

expected #<Watir::Input:0x..faa4dba70 located=false selector={:id=>"L2", :tag_name=>"input"}> to exist
./lektorat_anfrage.rb:44:in `block (4 levels) in <top (required)>'
./lektorat_anfrage.rb:41:in `each'
./lektorat_anfrage.rb:41:in `block (3 levels) in <top (required)>'

【问题讨论】:

    标签: ruby arrays checkbox rspec watir


    【解决方案1】:

    问题

    主要问题在于以下几行:

    checkbox = @browser.div(:class => 'check-handler')
    checkbox.input(:id => "#{checkLArr[x]}").should exist
    

    checkbox 是页面上第一个具有“检查处理程序”类的 div。在实际页面上,每个复选框都在其自己的“检查处理程序”div 中。 'L2'、'L3' 等复选框不在第一个 div 中,因此会引发异常。

    换句话说,代码正在寻找如下结构:

    <div class="check-handler">
      <input type="checkbox" id="L1" />
      <input type="checkbox" id="L2" />
    </div>
    

    当HTML实际上是这样的:

    <div class="check-handler">
      <input type="checkbox" id="L1" />
    </div>
    <div class="check-handler">
      <input type="checkbox" id="L2" />
    </div>
    

    解决方案

    从代码中,您似乎想要检查包含特定复选框的 div 元素。鉴于复选框有一个唯一的 ID,找到复选框然后向上导航到 DOM 到父 div 会更容易:

    browser.checkbox(:id => "#{checkLArr[x]}").parent.click
    

    我建议不要使用 for 循环,因为它会增加出错的机会(例如 checkLArr 的元素太少)。同样,在 if 语句中使用断言似乎很奇怪。我建议:

    checkLArr = Array["L1", "L2", "L3", "L4", "L5", "L6", "L7"]
    checkLArr.each do |id|
      input = browser.checkbox(:id => id)
      if input.exists?
        puts "GEIL jetzt wird geklickt"
        puts id
        input.parent.click
      else
        puts "Geht nicht"
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      相关资源
      最近更新 更多