用啥Selenium?! .NET程序员就用自家的Playwright for .NET

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用啥Selenium?! .NET程序员就用自家的Playwright for .NET相关的知识,希望对你有一定的参考价值。

提到用于Web应用程序自动化测试的工具,大家肯定第一个想到的就是Selenium。可以说,Selenium已经成为以编程方式自动化浏览器的事实标准。但是,Selenium作为老牌工具,也存在一些缺点,比如不支持Shadow DOM ,而这在现代网页程序中非常常见。

这就给新一代浏览器自动化工具的发展提供了机会。比如下面我们要介绍的Playwright for .NET

Playwright for .NET

Playwright 是微软开源的一个基于 Node.js 的工具库,可使用相同的API调用Chromium(Google-Chrome、Microsoft-Edge)、WebKit(Apple-Safari)和Mozilla-Firefox浏览器自动执行任务。

而Playwright for .NET(https://github.com/microsoft/playwright-dotnet)是Playwright的官方.NET移植,拥有原始库中的所有功能,可以在.NET中使用。

功能一瞥

首先,执行下面命令,安装全局工具:

dotnet tool install --global Microsoft.Playwright.CLI

我们创建一个NUnit测试项目,然后在项目目录下执行下面命令,引用“Microsoft.Playwright” Nuget包:

dotnet add package Microsoft.Playwright
dotnet build
playwright install

最后一个命令会调用之前安装的全局工具,安装Playwright工作所需的浏览器。

我们测试执行百度高级搜索的操作,编写测试代码如下:

using Microsoft.Playwright;
using NUnit.Framework;
using System.Threading.Tasks;

namespace TestProject1
{
    public class Tests
    {
        [Test]
        public async Task BaiduSearch()
        {
            using var playwright = await Playwright.CreateAsync();
            await using var browser = await playwright.Chromium.LaunchAsync(new() { Headless = true });

            var page = await browser.NewPageAsync();
            await page.GotoAsync("https://www.baidu.com/");

            await page.WaitForSelectorAsync("#s-usersetting-top");

            // 鼠标悬停在设置按钮,弹出菜单
            await page.HoverAsync("#s-usersetting-top");

            // 点击高级搜索链接,弹出高级搜索窗口
            await page.ClickAsync("a[href='//www.baidu.com/gaoji/advanced.html']");

            // 输入搜索关键字
            await page.TypeAsync("input[name='q1']", "\\"My IO\\"");

            var page1 = await page.RunAndWaitForPopupAsync(async () =>
            {
                // 点击搜索
                await page.ClickAsync(".advanced-search-btn");
            });

            //检查文本框内容
            var handle = await page1.WaitForSelectorAsync("#kw");
            var text = await handle.GetAttributeAsync("value");
            Assert.AreEqual("\\"My IO\\"", text);
        }
    }
}

通过上面的示例,我们看到Playwright for .NET可以使用多种方式定位元素,还可以执行一些特殊操作,比如鼠标悬停。

高级功能

Playwright for .NET还有一个厉害的录制功能,无需写一行代码,我们只需手动操作浏览器,它会录制我们的操作,然后自动生成代码脚本。

执行下面的命令启动录制:

playwright codege‍

结论

有了Playwright for .NET,我们就可以创建支持所有现代Web浏览器的自动化测试了,大家赶快用起来吧!

欢迎关注我的个人公众号”My IO“

以上是关于用啥Selenium?! .NET程序员就用自家的Playwright for .NET的主要内容,如果未能解决你的问题,请参考以下文章

现在软件开发,一般都用啥语言啊?

.NET的学习步骤,先学啥,用啥书?

一个char阵列 放入一堆数字,输出用啥?%s,还是%d , 还是%c?

NTFS格式用啥软件备份系统啊?

.net 向数据库插入10000条记录用啥方法最快?

database file文件用啥可以打开?