如何使用playwright在已有浏览器上进行自动化操作

第一步,需要关闭所有谷歌浏览器

第二步,cmd内输入

"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\chrome_debug"
 
系统会打开浏览器,然后在浏览器内打开需要操作的网址
 
第三步,编写代码,先提供简易版本,这里模拟的是点击打开页面中的“店铺”菜单
from playwright.sync_api import sync_playwright
import time

with sync_playwright() as p:
    # 连接到调试模式的 Chrome
    browser = p.chromium.connect_over_cdp("http://localhost:9222")
    pages = browser.contexts[0].pages if browser.contexts else []
    page = pages[0]
    page.wait_for_load_state('networkidle')
    element = page.locator("li.menu-item span[slot='title']:has-text('店铺')")
    element.click()
    print("通过CSS选择器点击成功")

加入校验、对象化

from playwright.sync_api import sync_playwright
import time

def click_element_via_existing_browser():
    """
    连接到已打开的Chrome浏览器并点击元素
    """
    try:
        with sync_playwright() as p:
            # 连接到已打开的Chrome浏览器
            browser = p.chromium.connect_over_cdp("http://localhost:9222")
            
            # 获取第一个页面(通常是你已经打开的页面)
            pages = browser.contexts[0].pages if browser.contexts else []
            if not pages:
                print("未找到已打开的页面")
                return
                
            page = pages[0]
            
            # 等待页面加载完成
            page.wait_for_load_state('networkidle')
            
            # 方法1:通过CSS选择器点击
            try:
                element = page.locator("li.menu-item span[slot='title']:has-text('店铺')")
                element.click()
                print("通过CSS选择器点击成功")
                return
            except Exception as e:
                print(f"CSS选择器点击失败: {e}")
            
            # 方法2:通过XPath点击(备选)
            try:
                element = page.locator("xpath=//li[contains(@class, 'menu-item')]//span[@slot='title' and text()='店铺']")
                element.click()
                print("通过XPath点击成功")
                return
            except Exception as e:
                print(f"XPath点击失败: {e}")
            
            # 方法3:通过文本内容点击
            try:
                element = page.locator("text=店铺")
                element.click()
                print("通过文本点击成功")
                return
            except Exception as e:
                print(f"文本点击失败: {e}")
                
    except Exception as e:
        print(f"连接浏览器失败: {e}")

# 运行脚本
if __name__ == "__main__":
    click_element_via_existing_browser()

第四步,具体如何在页面进行操作,比如筛选、匹配、查询,点击等,可以查查playwright的用法,网上很多,跟selenium很像的一个ui自动化工具

对了,playwright是可以录制操作步骤生成脚本的

 
posted @ 2025-11-04 10:28  小贝书屋  阅读(151)  评论(0)    收藏  举报