点击 Watir 中的深度嵌套 div

Click on deeply nested div in Watir

我正在尝试使用 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。

谢谢。

首先,您展示的 html 中只有一个元素具有 class 'x-grid3-cc-scopeCheckColumn',那么您有什么理由不能这样做:

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

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

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

在 Firefox 中使用 XPath 对我有用:

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

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