2

我有一个 .aspx 页面,我正在尝试通过 selenium UI 找到一个文本框。身份证是:p_lt_ctl01_pageplaceholder_p_lt_ctl00_SignUpFree_txtFirstName

我试过了:id=*._txtFirstName 和:id=glob:*_txtFirstName

除了 CSS 之外,还有没有更好的方法来定位每次编译时 id 可能会更改的文本框?

4

2 回答 2

4

您不能将通配符放在id“选择器”中。要么你用id=whole_id_here,要么不用。

幸运的是,对于您的情况,您可以使用 CSS 选择器:

[id*=_txtFirstName]

在 Selenium IDE 中,像这样使用它:

css=[id*=_txtFirstName]

示例 Selenium IDE 源代码片段:

<tr>
    <td>storeText</td>
    <td>css=[id*=_txtFirstName]</td>
    <td>x</td>
</tr>
<tr>
    <td>echo</td>
    <td>${x}</td>
    <td></td>
</tr>



注意:如果_txtFirstName总是在末尾,您也可以使用 CSS 定位器 with $instead of *(它的限制性更强,仅在末尾*匹配,如果在任何位置匹配)[id$=_txtFirstName]:. (在 Selenium IDE 中,自然地,像这样使用它:css=[id$=_txtFirstName]。)

于 2013-09-04T17:24:05.563 回答
2

你可以尝试使用contains

[contains(@id,'_txtFirstName')]
于 2013-09-04T17:26:59.917 回答