单击Watir中深层嵌套的div

时间:2015-01-08 22:18:57

标签: firefox selenium selenium-webdriver watir watir-webdriver

我试图使用Watir点击Firefox中的复选框(表示为)。我从之前的测试人员那里得到了代码,此代码适用于Chrome,但不适用于Firefox。

这就是我所拥有的。

以下是导致此div的代码:

<div class="x-grid3-body" style="width:515px;" id="ext-gen201">
    <div class="x-grid3-row  x-grid3-row-first" style="width:515px;">
        <table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="width:515px;">
            <tbody>
                <tr>
                    <td class="x-grid3-col x-grid3-cell x-grid3-td-0 x-grid3-cell-first " style="width: 158px;" tabindex="0">
                        <div class="x-grid3-cell-inner x-grid3-col-0 x-unselectable" unselectable="on">Organisation</div>
                    </td>
                    <td class="x-grid3-col x-grid3-cell x-grid3-td-1 " style="width: 298px;" tabindex="0">
                        <div class="x-grid3-cell-inner x-grid3-col-1 x-unselectable" unselectable="on">Catch Software</div>
                    </td>
                    <td class="x-grid3-col x-grid3-cell x-grid3-td-scopeCheckColumn x-grid3-cell-last  x-grid3-check-col-td" style="width: 53px;" tabindex="0">
                        <div class="x-grid3-cell-inner x-grid3-col-scopeCheckColumn x-unselectable" unselectable="on">
                            <div class="x-grid3-check-col x-grid3-cc-scopeCheckColumn">&nbsp;</div>
                        </div>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

我需要的是点击这个div

<div class="x-grid3-check-col x-grid3-cc-scopeCheckColumn">&nbsp;</div>

我无法附加屏幕截图(评分很低),但此div是我需要点击的复选框。

这段代码适用于Chrome:

@browser.div(:class => 'x-box-inner', :index => 1).table(:class => 'x-grid3-row-table').td(:text => 'Organisation').parent.td(:index => 2)

但是在Firefox中我可以看到Watir只是点击整个父div(可以看到选择出现在浏览器中),而不是复选框div。

谢谢。

2 个答案:

答案 0 :(得分:0)

首先,你所展示的html中只有一个元素有'x-grid3-cc-scopeCheckColumn'类,所以你不能这样做:

@browser.td(class: 'x-grid3-cc-scopeCheckColumn').click

如果没有,你可以大大简化你的元素位置以获得你想要的td,因为只有一个td有文本'Organization',而.parent只会获得它上面的td,但它看起来像你想要上面的tr标签,所以也许你想要:

@browser.td(text: 'Organisation').parent.parent.td(index: 2)

答案 1 :(得分:0)

在Firefox中使用XPath为我工作:

@browser.div(:xpath, "//*[@id='ext-gen201']/div/table/tbody/tr/td[3]/div/div").click

我能够使用.flash来代替.click来验证它,因为你的div只包含一个空格而且没有其他东西可以看到。