抖音粉丝群1
『7x24小时有问必答』

AI浪潮下的计算机行业——从业者现状与未来展望
推荐一个微软官方开源,且功能非常强大的浏览器自动化工具, 让我们很容易控制Chromium、Firefox 和 WebKit 内核的浏览器,实现跨浏览器的网页自动化操作。
01
项目简介
Playwright 一个开源浏览器自动化工具。 支持 Chromium、WebKit 和 Firefox 浏览器,且在不同操作系统(Linux、macOS 和 Windows)上均能良好运行,可在不同环境和浏览器间进行统一的自动化操作。
提供了一系列丰富的 API,可方便地实现页面导航、元素选择、截图、表单操作、文件下载等网页自动化功能,几乎涵盖了网页自动化测试的各种常见场景需求。
另外 .NET 版本的 Playwright,能够很好地与现有的 .NET 项目和技术栈进行集成,例如可以与测试框架(如 NUnit、xUnit 等)结合使用,方便地编写和执行自动化测试用例,融入到项目现有的测试流程中。

02
使用场景
    网页自动化测试 :可用于对 Web 应用程序进行功能测试、性能测试、兼容性测试等,通过编写自动化测试脚本,模拟用户在不同浏览器下的操作行为,快速发现和定位问题,提高测试效率和质量。
    网页内容抓取 :可以利用其自动化访问网页的能力,实现网页数据的抓取,例如获取网页中的文本、图片、表格等信息,用于数据分析、数据挖掘等场景。
    自动化任务执行 :在需要定期或批量执行某些网页操作的任务中发挥作用,如自动登录、自动填写表单、自动下载文件等,可减少人工重复操作,提高工作效率。
    03
    快速入门
    1、截屏
    using Microsoft.Playwright;

    using var playwright = await Playwright.CreateAsync();
    await using var browser = await playwright.Chromium.LaunchAsync(new() { 
        Headless = false,
        //指定浏览器路径
        ExecutablePath= "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    });
    var page = await browser.NewPageAsync();
    await page.GotoAsync("https://playwright.dev/dotnet");
    await page.ScreenshotAsync(new() { Path = "screenshot.png" });

    2、指定元素截图
    using Microsoft.Playwright;

    // 创建 Playwright 实例
    using var playwright = await Playwright.CreateAsync();
    // 启动 Chromium 浏览器(非无头模式)
    await using var browser = await playwright.Chromium.LaunchAsync(new()
    {
        Headless = false,
        ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    });
    // 创建一个新的页面
    var page = await browser.NewPageAsync();
    // 导航到页面
    await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
    {
        Timeout=60*1000
    });

    // 通过 CSS 选择器选择元素
    IElementHandle element = await page.QuerySelectorAsync(".container");
    if (element != null)
    {
        // 截取特定元素的截图
        await element.ScreenshotAsync(new() { Path = "element-screenshot.png" });
    }

    // 关闭浏览器
    await browser.CloseAsync();

    3、获取元素内容
    using Microsoft.Playwright;

    // 创建 Playwright 实例
    using var playwright = await Playwright.CreateAsync();
    // 启动 Chromium 浏览器(非无头模式)
    await using var browser = await playwright.Chromium.LaunchAsync(new()
    {
        Headless = false,
        ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    });
    // 创建一个新的页面
    var page = await browser.NewPageAsync();
    // 导航到页面
    await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
    {
        Timeout=60*1000
    });

    // 通过 CSS 选择器选择元素
    IElementHandle element = await page.QuerySelectorAsync("#__docusaurus");
    if (element != null)
    {
        // 执行元素操作,如获取文本内容
        string text = await element.TextContentAsync();
        Console.WriteLine($"Element text: {text}");
    }

    // 关闭浏览器
    await browser.CloseAsync();

    4、表单提交
    using Microsoft.Playwright;

    // 创建 Playwright 实例
    using var playwright = await Playwright.CreateAsync();
    // 启动 Chromium 浏览器(非无头模式)
    await using var browser = await playwright.Chromium.LaunchAsync(new()
    {
        Headless = false,
        ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    });
    // 创建一个新的页面
    var page = await browser.NewPageAsync();
    // 导航到页面
    await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
    {
        Timeout=60*1000
    });

    // 填写文本输入框
    await page.FillAsync("#username", "your-username");
    await page.FillAsync("#password", "your-password");

    // 选择单选按钮
    await page.CheckAsync("#radio-option");

    // 选择下拉框选项
    await page.SelectOptionAsync("#dropdown", "option-value");

    // 提交表单
    await page.ClickAsync("#submit-button");

    // 关闭浏览器
    await browser.CloseAsync();

    5、下载文件
    using Microsoft.Playwright;

    // 创建 Playwright 实例
    using var playwright = await Playwright.CreateAsync();
    // 启动 Chromium 浏览器(非无头模式)
    await using var browser = await playwright.Chromium.LaunchAsync(new()
    {
        Headless = false,
        ExecutablePath = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    });
    // 创建一个新的浏览器上下文
    var context = await browser.NewContextAsync(new BrowserNewContextOptions
    {
        AcceptDownloads = true,
    });
    // 创建一个新的页面
    var page = await context.NewPageAsync();
    // 导航到页面
    await page.GotoAsync("https://playwright.dev/dotnet", new PageGotoOptions()
    {
        Timeout=60*1000
    });

    // 点击下载链接并等待下载完成
    await page.ClickAsync("#download-link");
    // 等待下载完成
    await page.WaitForDownloadAsync();

    // 关闭浏览器
    await browser.CloseAsync();
    04
    项目简介
    https://github.com/microsoft/playwright-dotnet
    最后欢迎加入我的 知识星球带你从零学习:三层架构与领域驱动设计架构
    - End -
    推荐阅读
    回复“888”,免费领取.NetCore视频教程
    点击下方公众号卡片,关注我

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

Copyright 2010-2015. All rights reserved. 

微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码