假设我有一个网站,其中包含每次部署新版本时都会重新生成ID的元素。我的web元素定位器(下面)发生了变化,不再有效。 Id是唯一的唯一字段。
[FindsBy(How = How.CssSelector, Using = "select[id^='View_29_'][id$='_N_19610']")]
private IWebElement _wccType;
我有大约一百个这样的元素,我不知道如何减少维护。这些元素都在表格中。我将提供一个例子。
<TBODY>
<TR id=View_29_R_0_V_29_N_1157>
<TD ondblclick=EditView(2231,2,this); id=View_29_R_0_V_29_N_1157_E_2231 colSpan=2 haschanged="true" Isview="true" ContainerID="View_29_R_0_V_29_N_1157" ObjectID="-1" ContextPath="" ViewID="2231" TypeName="Event" Dynamic="true" ParentViewID="View_29_R_0_V_29"></TD>
</TR>
<TR class=ALT_DETAIL_ROW_EDIT>
<TD class=DETAIL_LABEL_CELL_EDIT width="25%" align=left tpfx="lbl_cell_">
<SPAN ondblclick=EditNode(19610,2,this); title="" class=FIELD_LABEL tpfx="lbl_">Type</SPAN>
</TD>
<TD width="75%" align=left tpfx="cell_">
<DIV id=C_View_29_R_0_V_29_N_1157_E_2231_N_19610 tpfx="cont_">
<SELECT onchange=SetIsDirty(this,View_29_R_0_V_29_N_1157_E_2231,this.value); id=View_29_R_0_V_29_N_1157_E_2231_N_19610 style="OVERFLOW: hidden; FONT-SIZE: 11px; HEIGHT: 20px; WIDTH: 100%" nullval="0">
<OPTION selected value=0></OPTION>
<OPTION title="Anonymous" value=1>Anonymous</OPTION>
<OPTION title="8" value=3>8</OPTION>
<OPTION title="7" value=5>7</OPTION>
<OPTION title="6" value=4>6</OPTION>
<OPTION title="5" value=6>5</OPTION>
<OPTION title="4" value=8>4</OPTION>
<OPTION title="3" value=9>3</OPTION>
<OPTION title="2" value=7>2</OPTION>
<OPTION title="1" value=10>1</OPTION>
<OPTION title="1" value=2>1</OPTION>
</SELECT>
</DIV>
</TD>
</TR>
</TBODY>
所以我在想,如果所有的ID都在变化,找到元素上方的TD''标签',然后使用xpath为td添加+1?
这可能是冗长的方式,但除了做一个完整的xpath树(差不多30个div和tr和td)我坚持如何定位元素。