我有一个带有运行设置文件的 Playwright 测试解决方案,当测试(Test2)运行时(通过 VS Code 中的测试资源管理器),它处于无头模式,并且似乎忽略了我在根目录中创建的运行设置文件(见下文)。我在同一个解决方案中进行了另一个测试 (Test1),它在类中显式设置了 BrowserTypeLaunchOptions,而不是利用 Base PageTest 类),并且它按预期使用 Chrome 浏览器运行。
Test2类代码:
using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
namespace Playwright_.NET;
public class NUnitPlaywright : PageTest
{
[SetUp]
public async Task Setup()
{
await Page.GotoAsync(url: "http://www.eaapp.somee.com");
}
[Test]
public async Task Test1()
{
await Page.ClickAsync(selector: "text=Login");
await Page.ScreenshotAsync(new PageScreenshotOptions
{
Path = "../../../Screenshots/EAApp.jpg"
});
await Page.FillAsync(selector: "#UserName", value: "admin");
await Page.FillAsync(selector: "#Password", value: "password");
await Page.ClickAsync(selector: "text=Log in");
await Page.ScreenshotAsync(new PageScreenshotOptions
{
Path = "../../../Screenshots/Login Assertion.jpg"
});
await Expect(Page.Locator(selector: "text='Employee Details'")).ToBeVisibleAsync();
}
}
test.runsettings 文件
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<!-- Configurations that affect the Test Framework -->
<RunConfiguration>
<EnvironmentVariables>
<!-- For debugging selectors, it's recommend to set the following environment variable -->
<DEBUG>pw:api</DEBUG>
</EnvironmentVariables>
</RunConfiguration>
<!-- Playwright -->
<Playwright>
<BrowserName>chromium</BrowserName>
<ExpectTimeout>5000</ExpectTimeout>
<LaunchOptions>
<Headless>false</Headless>
<Channel>chrome</Channel>
</LaunchOptions>
</Playwright>
<!-- NUnit adapter -->
<NUnit>
<NumberOfTestWorkers>24</NumberOfTestWorkers>
</NUnit>
</RunSettings>
测试1类代码
using Microsoft.Playwright;
namespace Playwright_.NET;
public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
public async Task Test1()
{
//Prepare Playwright driver
using var playwright = await Playwright.CreateAsync();
//Launch Browser (not in headless mode)
await using var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions()
{
Headless = false
});
//Navigate to page
var page = await browser.NewPageAsync(); //NewPageAsync - Convenience api. Frameworks should create IBrowser.NewContextAsync(BrowserNewContextOptions)
await page.GotoAsync(url: "http://www.eaapp.somee.com");
//Click login
await page.ClickAsync(selector: "text=Login");
//Take Screenshot of login page (current view)
await page.ScreenshotAsync(new PageScreenshotOptions
{
Path = "../../../Screenshots/EAApp.jpg"
});
//Input login details and click Log in button
await page.FillAsync(selector: "#UserName", value: "admin");
await page.FillAsync(selector: "#Password", value: "password");
await page.ClickAsync(selector: "text=Log in");
await page.ScreenshotAsync(new PageScreenshotOptions
{
Path = "../../../Screenshots/Login Assertion.jpg"
});
//Assertion
var isExist = await page.Locator(selector: "text='Employee Details'").IsVisibleAsync();
Assert.IsTrue(isExist);
}
}