我有一个 .aspx 页面,我正在尝试通过 selenium UI 找到一个文本框。身份证是:p_lt_ctl01_pageplaceholder_p_lt_ctl00_SignUpFree_txtFirstName
我试过了:id=*._txtFirstName
和:id=glob:*_txtFirstName
除了 CSS 之外,还有没有更好的方法来定位每次编译时 id 可能会更改的文本框?
您不能将通配符放在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]
。)
你可以尝试使用contains
[contains(@id,'_txtFirstName')]