0

我通常的获取复选框的方法似乎在这里不起作用......基本上我有一个包含一些数据的表格,但第一个td是一个复选框。我想要做的是单击该复选框,但无论我做什么,它似乎都不会出现在屏幕上,或者至少它不可点击。我已经尝试将 xpath 与td[1],和许多其他排列一起使用td[1]/inputtd[1]/input[@data-role="checkbox"]但没有运气......我正在使用 SitePrism 并且已经在行内,所以我应该能够正确使用这些元素。例如使用td[2]with.text给我Foo没有问题......但它几乎就像复选框不存在一样。

此外,如果我尝试这样做all('input').size或者all('label').size我得到 0,这向我表明,尽管页面上清楚地显示并通过 chrome 开发工具进行了检查,但这些都没有呈现。

<tr data-uid="123" role="row" class="state-selected" tabindex="1008">
    <td aria-describedby="75e50a2e-9354-43aa-90af-231170f41b4f" role="gridcell">
        <input class="k-checkbox" data-role="checkbox" id="3a3d214a-9e48-4c3e-869d-9821b42ded19" aria-label="Select row" aria-checked="false" type="checkbox" tabindex="-1">
        <label for="3a3d214a-9e48-4c3e-869d-9821b42ded19" class="k-checkbox-label k-no-text">&#8203;</label>
    </td>
    <td class="gridDataString" tabindex="-1" aria-describedby="6e767f1c-78a3-4988-9633-17bcab112766" role="gridcell">
        <span>Foo</span>
    </td>
    <td class="gridDataString" tabindex="-1" aria-describedby="2f654308-1ddb-4f54-a3bf-2d6c36980378" role="gridcell">
        <span>Bar</span>
    </td>
    <td class="gridDataString" tabindex="-1" aria-describedby="3ae4ac0a-e16d-4892-b8ad-a821adeb55ee" role="gridcell">
        <span></span>
    </td>
    <td class="gridDataString" tabindex="-1" aria-describedby="f443994b-3e0f-4e8e-a658-f5efe839bb5e" role="gridcell">
        <span>Foo Barrr</span></td>
    <td class="gridDataString" tabindex="-1" style="display:none" aria-describedby="0f49ae1e-765e-4f99-83b1-46aa3067ac5f" role="gridcell">
        <span ng-bind="dataItem.modelId">0x0000000000004701,0x00000000000811f9,</span>
    </td>
</tr>
4

1 回答 1

1

我猜实际的复选框元素在页面上不可见,并且出于样式原因已通过 CSS 隐藏以替换为图像。检查应用于实际复选框元素的样式display: none,如opacity: 0、 等。

要使用此功能,您可以单击与复选框关联的标签元素,或者在实际复选框不可单击时将元素传递allow_label_clickcheck它以单击关联的标签。如果没有可见的关联标签元素,则另一个可能的选择是单击该td元素 - 这将触发中间的单击,td实际上应该点击复选框替换。假设您已经有行元素(tr)以下之一应该可以工作

tr.check(class: 'k-checkbox', allow_label_click: true)
tr.find('label.k-checkbox-label').click

不太容易理解,但在某些情况下可能有效/必要

tr.find('td:first-child').click
于 2018-07-16T18:55:28.243 回答