安装模块
pip install playwright
安装内核
playwright install

  • python实例
from playwright.sync_api import Playwright, sync_playwright

def get_browser() -> Playwright:
    with sync_playwright() as p:
        #for browser_type in [p.chromium, p.firefox, p.webkit]:
        browser = p.chromium.launch(channel="msedge",headless=False,slow_mo=1000)
        #p.chromium, p.firefox, p.webkit(channel 浏览器类型 
        #                                headless 如果不设置为 False,默认是无头模式启动浏览器,我们看不到任何窗口。
        #                                 slow_mo 操作延时)

        context = browser.new_context() # 创建上下文,浏览器实例
        page = context.new_page() # 打开标签页
        page.goto('https://www.baidu.com')
        #截图
        #page.screenshot(path=f'screenshot-{browser_type.name}.png')
        print(page.title()) #打印表头
        '''
            /:  从根节点选取
            //: 从非根节点选取
            *:  任意节点选取
            @:  根据属性筛选
            text(): 根据文本筛选
            and: 关联属性或者链接文本
            []: 可以防止下标/属性/链接文本
            .:  选取当前节点
            ..:选取当前节点的父节点
            contains:包含
        '''
        #Playwright XPath 框架
        # 多属性定位   控制台:$x('//*[@id="s-usersetting-top"]')  .[0].textContent
        print(page.locator('//*[@id="s-usersetting-top" and @name="tj_settingicon"]').text_content())
        #通过. ..来定位 $x('//div[@id="s-top-left"]/a/../div/a')[0].textContent
        #通过文本定位 $x('//a[text()="hao123"]')
        #模糊匹配 '//a[contains(text(),"hao")]

        #CSS 定位方式 
        # id定位 控制台 $('#kw')  标签+属性 $('input#kw')
        #通过CSS定位 page.locator('.s_ipt').fill('美女')
        # page.locator('div > form > span > input.s_ipt').fill('动漫')
        page.locator('input#kw').fill('美女')
        page.locator('#su').click()
        #回退键
        #page.go_back()
        #特有定位方式 page.get_by_ 
        with context.expect_page() as new_page_info:
            page.locator('//*[@id="1"]/div/div[1]/div/div[1]/a[1]/img').click()
            #page.click('a[target="_blank"]')
        new_page = new_page_info.value
        new_page.wait_for_load_state() # 等待页面加载到指定状态
        print(new_page.title())
        new_page.wait_for_timeout(3000)   
        #关闭
        browser.close()

模拟手机浏览器

        iphone = p.devices["iPhone 6"]
        context = browser.new_context(**iphone) # 创建上下文,浏览器实例

如果提示没有安装指定浏览器 根据提示安装就好win11(playwright install)

  • 脚本录制

录制脚本保存 指定浏览器

python -m playwright codegen --target python -o 'edge.py' -b chromium --channel=msedge

指定窗口大小–viewport-size选项生成不同大小的窗口

playwright codegen --viewport-size=800,600

指定设备型号 --device="iPhone 12 Pro"

playwright codegen --device="iPhone 12 Pro"

模拟地理位置、语言和时区

playwright codegen --timezone="Asia/Shanghai" --geolocation="30.890221,120.492348" --lang="zh-CN"

运行codegen以在会话结束时–save-storage保存cookie和localStorage ,执行身份验证并关闭浏览器后,auth.json将包含存储状态

playwright codegen --save-storage=auth.json

运行–load-storage以消耗先前加载的存储。这样,所有的cookie和localStorage都将被恢复,使大多数网络应用程序进入身份验证状态。

playwright open --load-storage=auth.json

Docker
https://playwright.dev/docs/docker/#base-images

发表评论