如何在Groovy / Geb中逐个单击复选框?

时间:2014-01-10 00:16:56

标签: html css groovy automation geb

我正在使用Groovy / Geb编写自动化脚本,HTML代码如下所示:

<table class="backgrid">
  <thead>
    <tr>
        <th class="select-all-header-cell">
            <input tabindex="-1" type="checkbox">
        </th>
        <th>
            <a>
                List Item<b class="sort-caret"></b>
            </a>
        </th>
    </tr>
  </thead>
    <tbody>
        <tr>
            <td class="select-row-cell">
                <input tabindex="-1" type="checkbox">
            </td><td class="string-cell">CAD</td>
        </tr>
        <tr>
            <td class="select-row-cell">
                <input tabindex="-1" type="checkbox">
            </td>
            <td class="string-cell">
                USD
            </td>
        </tr>
        <tr>
            <td class="select-row-cell">
                <input tabindex="-1" type="checkbox">
            </td>
            <td class="string-cell">.
                GBP
            </td>
        </tr>
        <tr>
            <td class="select-row-cell">
                <input tabindex="-1" type="checkbox">
            </td>
            <td class="string-cell">
                KPW
            </td>
        </tr>
    </tbody>
</table>

我需要逐个点击内部的复选框,然后转到自动化的下一个阶段。但我被困在这里。我知道点击复选框我应该使用interact {}但是我找不到这种东西的任何示例。任何提示或建议都对我有很大的帮助!

2 个答案:

答案 0 :(得分:2)

您无需使用interact {}来实现它 - 使用click()的方式更简单。

要点击标题中的复选框,您可以使用:

$("table.backgrid thead input").click()

要点击货币复选框,请使用:

def checkboxes = $("table.backgrid tbody input")
checkboxes[0].click() //CAD
checkboxes[2].click() //GBP

答案 1 :(得分:0)

Quoting the docs

  

[...]调用值(值)将设置导航器中所有元素的当前值。参数可以是任何类型,如果需要,将被强制转换为String。例外情况是,设置复选框值时,方法需要布尔值...

所以,我自己没有尝试过这个,但我认为如果你可以将你的html更改为类似的东西(注意我在元素中添加了 name 属性)

[...]
    <td class="select-row-cell">
        <input tabindex="-1" type="checkbox" name="GBP">
    </td>
    <td class="string-cell">.
        GBP
    </td>
[...]

然后下一个代码应该做的诀窍:

$("checkbox", name: "GBP").value(true)    //Should set the checkbox to 'checked'