我正在使用一个网站,每次元素加载时,元素的值都会动态变化。 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">
我希望点击“商品定价”文字。
答案 0 :(得分:0)
您可以通过以下XPath选择其内容等于字符串的表格单元格,例如“项目定价”:
python manage.py test --settings=equity_funds.settings