点击 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"> </div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
我基本上需要的是点击这个 div
<div class="x-grid3-check-col x-grid3-cc-scopeCheckColumn"> </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 并且没有其他东西可以看到。
我正在尝试使用 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"> </div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
我基本上需要的是点击这个 div
<div class="x-grid3-check-col x-grid3-cc-scopeCheckColumn"> </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 并且没有其他东西可以看到。