id()函数可高效定位带唯一ID的元素,语法为id('ID值'),如id('submit-button')直接选中对应元素;相比//[@id=''],id()利用文档索引更快,且XPath 2.0+支持多ID查询如id('a b c'),但依赖ID存在与稳定,动态ID需改用contains()、其他属性或相对路径等方法。

XPath的
id()
id
要使用
id()
id('你的ID值')举个例子,假设你有一个这样的HTML片段:
<div id="main-content">
<p>这是一段主要内容。</p>
<button id="submit-button">提交</button>
</div>
<div id="sidebar">
<p>这是侧边栏内容。</p>
</div>如果你想选中那个“提交”按钮,你可以直接写:
id('submit-button')这个XPath表达式会直接返回那个
<button>
/html/body/div[1]/button
id()
@id
这确实是个挺有意思的问题,也是我刚开始接触XPath时常常会混淆的地方。表面上看,
id('someId')//*[@id='someId']
最核心的不同在于,
id()
id()
而
@id='someId'
id
'someId'
//*[@id='someId']
*
id
id()
还有一个不容忽视的点是,在XPath 2.0及更高版本中,
id()
id('id1 id2 id3')//*[@id='id1' or @id='id2']
id()
在我看来,
id()
优先使用的场景:
id()
id()
id()
局限性也不少,这玩意儿不是万能的:
id="app-xxxxxx"
id()
id
id()
id
name
data-
@name='value'
@data-test='value'
id()
|
id()
总的来说,
id()
id()
面对动态ID,
id()
处理动态ID的策略:
id="user-input-12345"
id="user-input-67890"
contains()
starts-with()
ends-with()
//*[starts-with(@id, 'user-input-')]
//*[contains(@id, 'input')]
name
class
type
data-*
//input[@name='username']
//button[contains(@class, 'submit-btn')]
//*[@data-test='login-button']
//button[text()='提交']
//div[contains(text(), '欢迎来到')]
div
id('form-container')/input[1]label
//label[text()='用户名:']/following-sibling::input
多个ID的场景:id()
这得分情况讨论,主要看你使用的XPath版本。
XPath 1.0: 不支持直接传入多个ID。如果你想通过
id()
|
id('id1') | id('id2') | id('id3')XPath 2.0及更高版本: 这就是
id()
id('header-nav main-content sidebar')所以,面对多个ID,
id()
以上就是XPath的id()函数怎么通过ID选择元素?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号