You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Playwright中选中并高亮句子中的部分指定文本?

Playwright 选中元素内指定文本实现高亮的方案

核心实现逻辑是调用浏览器原生的Range和Selection接口,定位目标单词的文本偏移量完成选中,再执行右键点击即可,完整示例代码如下:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动浏览器,headless设为False方便查看效果
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    # 替换为你的实际页面访问地址
    page.goto("你的页面地址")

    # 等待目标元素加载完成
    target_div = page.locator(".line-text")
    target_div.wait_for(state="visible")

    # 执行JS脚本高亮选中"account"单词
    target_div.evaluate("""element => {
        const textContent = element.textContent;
        const targetStr = "account";
        // 查找目标单词的起始位置
        const startIndex = textContent.indexOf(targetStr);
        // 找不到目标单词直接返回
        if (startIndex === -1) return;
        const endIndex = startIndex + targetStr.length;

        const range = document.createRange();
        const selection = window.getSelection();
        // 清空之前的选中内容
        selection.removeAllRanges();
        // 绑定起止位置到文本节点
        range.setStart(element.firstChild, startIndex);
        range.setEnd(element.firstChild, endIndex);
        // 应用选中实现高亮
        selection.addRange(range);
    }""")

    # 对目标元素执行右键点击
    target_div.click(button="right")

    # 调试用,执行完暂停3秒查看效果
    page.wait_for_timeout(3000)
    browser.close()

注意事项

  • 如果当前元素内存在多个account单词,上述代码只会选中第一个匹配项,需要匹配第N个时可修改indexOf的查找逻辑,传入第二个参数指定查找起始位置即可
  • 如果目标文本是动态渲染的,需要提前增加等待逻辑,确保文本已经渲染完成再执行选中操作,避免出现偏移量计算错误

内容的提问来源于stack exchange,提问作者For Testing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 18:06:03