在生成表的Div中选择前面的同级复选框
本文关键字:前面 复选框 选择 Div | 更新日期: 2023-09-27 18:18:05
我在使用xpath选择时遇到了一点麻烦。
我目前正在使用c#和Selenium
我正试图克服一个问题,即我需要在生成的表中选择一个复选框,而只知道在前面的兄弟Div中的一行文本。所有ID都可以改变,因为它们是随机生成的。
我想选择class="jqx-checkbox-check-checked"而只知道文本"testdata"
<div role="row" style="position: relative; height:28px;" id="row1jqxgrid">
<div role="gridcell" style="left: 0px; z-index: 790; width:30px;" class="jqx-grid-cell jqx-item jqx-grid-cell-alt jqx-grid-cell-selected jqx-fill-state-pressed">
<div style="position: absolute; top: 50%; left: 50%; margin-top: -7px; margin-left: -10px; overflow: visible; cursor: auto;" id="jqxWidget3af6ac8d" tabindex="0" class="jqx-widget jqx-checkbox">
<div class="jqx-checkbox-default jqx-fill-state-normal jqx-rc-all">
<div style="width: 13px; height: 13px;"><span style="width: 13px; height: 13px;" class="jqx-checkbox-check-checked"></span></div>
</div>
<div style="clear: both;"></div>
</div>
</div>
<div role="gridcell" style="left: 30px; z-index: 789; width:25px;display: none;" class="jqx-grid-cell"></div>
<div role="gridcell" style="left: 30px; z-index: 789; width:200px;" class="jqx-grid-cell jqx-item jqx-grid-cell-alt jqx-grid-cell-selected jqx-fill-state-pressed">
<div class="jqx-grid-cell-left-align" style="margin-top: 6px;"><a id="id_01" href="/test/testing?id_01=199">testdata</a></div>
</div>
</div>
您可以尝试选择包含字符串testdata
的row
,并在该row
中选择具有所需类的div
。
第一次尝试是:
//div[@class='row'][.//div[text()='testdata']]//span[@class='jqx-checkbox-check-checked']
你可以用testdata
选择元素,进入祖先div然后进入你需要的span:
//*[text()='testdata']/ancestor::div[@role='row']//span
您还可以指定所需span的类或部分类:
//*[text()='testdata']/ancestor::div[@role='row']//span[contains(@class,'checked')]
//*[text()='testdata']/ancestor::div[@role='row']//span[@class = 'jqx-checkbox-check-checked']