如何在 ID 不断变化时通过 XPath 识别元素



我正在使用一个网站,每次加载元素时,元素的值都会动态变化。id是动态的,XPath也是动态的。我似乎没有任何唯一标识符来定位元素。请告知每次页面加载时唯一标识元素的最佳方式。

下面是首次加载页面时的 XPath 示例:

.//*[@id='isc_HY']/table/tbody/tr/td

当我再次运行时,相同的元素如下:

.//*[@id='isc_IP']/table/tbody/tr/td    

页面上还有其他几个元素,看起来像上面的元素。

例如,有一个我不需要的具有以下 XPath 的元素:

.//*[@id='isc_I2']/table/tbody/tr/td

以下是相同的 HTML 信息:

<div id="isc_HY" style="position: relative; display: inline-block; box-sizing: border-box; width: 100%; vertical-align: top; visibility: inherit; z-index: 204195; cursor: pointer;" eventproxy="isc_OBTabBarButtonChild_9">
 <table width="68px" height="38px" cellspacing="0" cellpadding="0">
 <tbody>
 <tr>
 <td class="OBTabBarButtonChildTitleOver" valign="center" nowrap="true" align="right" onfocus="isc_OBTabBarButtonChild_9_label.$47()" tabindex="-1">Item Pricing</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="isc_I0" class="OBTabBarButtonChildTopOver" onscroll="return isc_OBTabBarButtonChild_9.$lh()" style="position: absolute; left: 208px; top: 0px; width: 96px; height: 38px; z-index: 204194; box-sizing: border-box; overflow: hidden; cursor: pointer; outline-style: none;" tabindex="4914" onblur="if(window.isc)isc.EH.blurFocusCanvas(isc_OBTabBarButtonChild_9,true);" onfocus="if(event.target!=this)return;isc.EH.focusInCanvas(isc_OBTabBarButtonChild_9,true);" role="tab" eventproxy="isc_OBTabBarButtonChild_9">
<div id="isc_I1" onscroll="return isc_OBTabBarButtonChild_10.$lh()" style="position: absolute; left: 319px; top: 0px; width: 59px; height: 38px; z-index: 204213; box-sizing: border-box; overflow: hidden; cursor: pointer; outline-style: none;" tabindex="-1" onblur="if(window.isc)isc.EH.blurFocusCanvas(isc_OBTabBarButtonChild_10_label,true);" onfocus="if(event.target!=this)return;isc.EH.focusInCanvas(isc_OBTabBarButtonChild_10_label,true);" role="label" eventproxy="isc_OBTabBarButtonChild_10">

我想点击"商品定价"文本。

您可以通过以下 XPath 选择内容等于字符串(如"商品定价")的表格单元格:

//td[. = 'Item Pricing']

最新更新