找到一个不断变化的元素(ID不断变化)

时间:2016-02-09 09:54:03

标签: c# html selenium xpath selenium-webdriver

假设我有一个网站,其中包含每次部署新版本时都会重新生成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)我坚持如何定位元素。

0 个答案:

没有答案