Ste*_*son 5 jsf selenium xpath
我正在使用JSF 1.2.我们想编写一些selenium测试(基于xpath),但xpath似乎没有对元素id进行通配符匹配.
我们无法关闭前缀ID,因为我们在IBM Portal Server 6.1中作为portlet运行,并且我们的应用程序在关闭前缀的环境中中断.
目前我们正在使用表单的xpath
//*[substring(@id, 54)='id_distributorName']
这将匹配:
<select size="1" class="firstName" name="viewns_7_8000CB1A0GUIE0IJF799CR10O2_:commonEntryForm:id_distributorName" id="viewns_7_8000CB1A0GUIE0IJF799CR10O2_:commonEntryForm:id_distributorName" >
但是让我觉得假设JSF总是生成一个相同长度的viewId是危险的.
有一个更好的方法吗?
我们已经尝试将该name属性用于我们的输入控件,但当然JSF忽略该属性并编写它自己的name属性,其值与id匹配,大概是为了处理脚本的原因)
如果您使用的是XPath 2.0,只需使用ends-with()功能:
//*[ends-with(@id, ':id_distributorName')]
Run Code Online (Sandbox Code Playgroud)
如果您使用的是XPath 1.0,请使用string-length()以计算以下内容的开头substring():
//*[substring(@id, string-length(@id) - 18) = ':id_distributorName']
Run Code Online (Sandbox Code Playgroud)
这里,18是id_distributorName(没有:前缀!)的长度.
好的,我刚刚回答了我自己的问题.
我承认我对xpaths知之甚少,这是我的借口!
答案是使用 contains()
即
//*[contains(@id, 'id_distributorName')]
| 归档时间: |
|
| 查看次数: |
1435 次 |
| 最近记录: |