使用XPath定位信息继3

本文详细介绍了 XPath 中的 descendant-or-self 和 ancestor-or-self 轴的使用方法,并通过实例展示了如何选取 XML 文档中特定的节点。此外还探讨了 ancestor、descendant、following 和 preceding 轴的应用场景。

 

16. descendant-or-self (axis) 包含上下文节点本身和该节点的后代节点

/AAA/XXX/descendant-or-self::*

< AAA >

    < BBB >

       < CCC />

       < ZZZ >

           < DDD />

       </ ZZZ >

    </ BBB >

    <XXX>

       <DDD>

           <EEE />

           <DDD />

           <CCC />

           <FFF />

           <FFF>

              <GGG />

           </FFF>

       </DDD>

    </XXX>

    < CCC >

       < DDD />

    </ CCC >

</ AAA >

 

17. ancestor-or-self(axis) 包含上下文节点本身和该节点的祖先节点

/AAA/XXX/DDD/EEE/ancestor-or-self::*

<AAA>

    < BBB >

       < CCC />

       < ZZZ >

           < DDD />

       </ ZZZ >

    </ BBB >

    <XXX>

       <DDD>

           <EEE />

           < DDD />

           < CCC />

           < FFF />

           < FFF >

              < GGG />

           </ FFF >

       </DDD>

    </XXX>

    < CCC >

       < DDD />

    </ CCC >

</AAA>

 

18.   ancestor, descendant, following, preceding self(axis) 分割了XML 文档( 忽略属性节点和命名空间节点), 不能交迭, 而一起使用则包含所有节点

//GGG/descendant::*

< AAA >

    < BBB >

       < CCC />

       < ZZZ />

    </ BBB >

    < XXX >

       < DDD >

           < EEE />

           < FFF >

              < HHH />

              < GGG >

                  <JJJ>

                     <QQQ />

                  </JJJ>

                  <JJJ />

              </ GGG >

              < HHH />

           </ FFF >

       </ DDD >

    </ XXX >

    < CCC >

       < DDD />

    </ CCC >

</ AAA >

 

19. div 运算符做浮点除法运算, mod 运算符做求余运算, floor 函数返回不大于参数的最大整数( 趋近于正无穷), ceiling 返回不小于参数的最小整数( 趋近于负无穷)

选择偶数位置的BBB 元素 //BBB[position() mod 2 = 0 ]

< AAA >

    < BBB />

    <BBB />

    < BBB />

    <BBB />

    <BBB />

    <BBB />

    <BBB />

    <BBB />

    < CCC />

    < CCC />

    < CCC />

</ AAA >

 

 

### 在 Playwright 中使用 XPath 进行元素定位 Playwright 提供了强大的 API 来支持通过多种方式定位页面上的元素,其中包括使用 XPath 表达式。要通过 XPath 定位元素,可以使用 `page.locator()` 方法,并传入带有 `[xpath=<expression>]` 的字符串作为参数[^1]。 以下是具体的操作说明以及代码示例: #### 基础语法 在 Playwright 中,XPath 表达式的写法需遵循以下格式: ```plaintext [xpath=&#39;//your/xpath/expression&#39;] ``` 这表示将指定的 XPath 表达式传递给 Playwright 用于查找匹配的 DOM 节点。 #### 示例代码 假设我们需要点击一个按钮,其 HTML 结构如下所示: ```html <button id="submit-btn">Submit</button> ``` 可以通过以下方法使用 XPath 找到该按钮并执行点击操作: ```javascript const { chromium } = require(&#39;playwright&#39;); (async () => { const browser = await chromium.launch(); const context = await browser.newContext(); const page = await context.newPage(); // 导航至目标网页 await page.goto(&#39;https://example.com&#39;); // 使用 XPath 查找元素并点击 await page.locator(&#39;[xpath="//button[@id=\&#39;submit-btn\&#39;]"]&#39;).click(); console.log("按钮已被点击"); await browser.close(); })(); ``` #### 复杂情况处理 当面对更复杂的选择条件时(例如根据文本内容或其他属性),也可以灵活运用 XPath 功能。比如寻找包含特定文字的链接标签 `<a>`: ```javascript await page.locator(&#39;[xpath="//a[text()=\&#39;&#39; + targetText + &#39;\&#39;]"]&#39;).click(); ``` 这里需要注意转义字符的应用以确保字符串拼接正确无误[^2]。 另外,在某些情况下可能需要等待某个动态加载出来的组件变得可交互之前先暂停片刻再续下一步动作,这时就可以结合 `waitForSelector` 或类似的同步手段来增强稳定性[^3]: ```javascript await page.waitForSelector(&#39;[xpath="//div[contains(@class,\&#39;dynamic-content\&#39;)]"]&#39;); let element = await page.locator(&#39;[xpath="//input[@placeholder=\&#39;Enter your name...\&#39;]"]&#39;); await element.fill(&#39;John Doe&#39;); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值