xpath中and和or的优先级规则是:1. and运算符的优先级高于or运算符,因此在无括号的情况下会先执行and;2. 可通过括号明确优先级,确保逻辑符合预期;3. 实际应用中需结合稳定属性、分步定位和分段测试来提升表达式的可读性与维护性;4. 典型场景包括数据抓取中的多条件商品筛选、评论过滤,以及自动化测试中的元素状态验证与复杂定位,均依赖and和or的灵活组合实现精准匹配。
XPath中,
and
or
XPath的
and
or
and
or
比如,我想找一个
div
id
class
//div[@id='content' and @class='main']
如果我希望找到一个
div
id
class
or
//div[@id='header' or @class='footer']
事情变得有趣起来,当我们把
and
or
and
or
所以,如果我想表达“(是新品且打折)或者(是特定品牌)”,我必须用括号来强制优先级:
//div[(@class='new-arrival' and @class='discount') or @data-brand='XYZ']
and
在XPath中,
and
or
and
举个例子,假设我们有这样的XPath表达式:
//a[@href='#' and @class='active' or @id='default']
根据优先级规则,这个表达式会被解析为:
//a[(@href='#' and @class='active') or @id='default']
它会先查找所有
href='#'
class='active'
<a>
id='default'
<a>
如果你想要表达的是“
href='#'
class='active'
id='default'
//a[@href='#' and (@class='active' or @id='default')]
这时候,括号内的
or
class='active'
id='default'
<a>
href='#'
and
构建复杂的XPath表达式,尤其是在处理大型或结构不稳定的页面时,确实是个挑战。我个人的经验是,首先要避免“一锅端”式的超长表达式。把复杂的逻辑拆解开来,一步一步地构建,会清晰很多。
一个有效的方法是,先定位到一个大致的区域,比如一个特定的
div
section
#main-content
> .item
例如,如果你要找一个特定产品卡片里的价格:
//div[@class='product-card' and @data-id='12345']/div[@class='price']/span[@class='current-price']
另一个是,尽可能使用那些相对稳定、具有业务含义的属性,而不是那些可能随时变化的、无意义的类名或索引。
id
name
data-*
data-test-id
data-product-sku
最后,测试是不可或缺的。我经常会在浏览器开发者工具里(比如Chrome的Console)直接输入
$x("你的XPath表达式")
XPath的条件组合能力在数据抓取(网络爬虫)和自动化测试中简直是不可或缺的利器。
在数据抓取方面,我经常用它来精确筛选出我需要的信息,同时排除掉无关的噪音。
//div[@class='product-item' and contains(@class, 'in-stock') and .//span[@class='price' and number(text()) < 100] and .//a[@class='category-link' and text()='图书']]
//div[@class='review-card' and .//span[@class='rating' and @data-stars > 4] and (contains(.//div[@class='review-text'], '好用') or contains(.//div[@class='review-text'], '推荐'))]
在自动化测试中,XPath的条件组合则用于确保我们能稳定、准确地找到页面上的交互元素,并验证其状态。
//button[text()='提交' and not(@disabled) and @aria-hidden='false']
disabled
//button[text()='提交' and not(@disabled)]
//tr[.//td[text()='张三'] and .//td[text()='活跃']]
data-*
//div[@data-product-id='P001' and @data-category='Electronics' and @data-status='Available']
这些例子都展示了
and
or
以上就是XPath的and和or运算符如何组合多个条件?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号