Я использую этот пример приложения Maui Blazor от Microsoft: https://github.com/dotnet/blazor-sample ... iBlazorWeb
Я создал новый тестовый проект с помощью Appium и Playwright. При разработке этого тестового проекта я взял за основу этот пример проекта на сайте Microsoft Learn: https://learn.microsoft.com/en-us/sampl ... ium-nunit/
Этот проект сам по себе работал бы, если бы мое приложение было полностью создано на Мауи. Но поскольку у меня гибридное приложение, я смог только запустить его. Я не могу найти элементы в BlazorWebView.
Вот мой пример теста.
Код: Выделить всё
namespace MauiBlazorWeb.AppiumPlaywright;
public class SampleTests : BaseTest
{
[Test]
public async Task SampleTestToCheckHomePage()
{
var browser = await Playwright.Chromium.ConnectOverCDPAsync("http://localhost:9222");
var context = browser.Contexts[0];
// For some reason there are three pages
var page = context.Pages[0];
var page1 = context.Pages[1];
var page2 = context.Pages[2];
var pageText0 = await page.ContentAsync();
var pageText1 = await page1.ContentAsync();
var pageText2 = await page2.ContentAsync();
Console.WriteLine("Page0 START");
Console.WriteLine(pageText0);
Console.WriteLine("Page1 START");
Console.WriteLine(pageText1);
Console.WriteLine("Page2 START");
Console.WriteLine(pageText2);
Assert.Multiple(() =>
{
Assert.That(pageText0.Contains("Welcome to your new app."));
Assert.That(pageText1.Contains("Welcome to your new app."));
Assert.That(pageText2.Contains("Welcome to your new app."));
});
}
}
Также вот код утилиты для запуска приложения MauiBlazor с помощью Appium.
Сначала класс AppiumSetup:
Код: Выделить всё
using OpenQA.Selenium.Appium;
using OpenQA.Selenium.Appium.Windows;
namespace MauiBlazorWeb.AppiumPlaywright;
[SetUpFixture]
public class AppiumSetup
{
private static AppiumDriver? driver;
public static AppiumDriver App => driver ?? throw new NullReferenceException("AppiumDriver is null");
[OneTimeSetUp]
public void RunBeforeAnyTests()
{
// If you started an Appium server manually, make sure to comment out the next line
// This line starts a local Appium server for you as part of the test run
AppiumServerHelper.StartAppiumLocalServer();
var windowsOptions = new AppiumOptions
{
// Specify windows as the driver, typically don't need to change this
AutomationName = "windows",
// Always Windows for Windows
PlatformName = "Windows",
// The identifier of the deployed application to test
App = "com.companyname.mauiblazorweb.maui_9zz4h110yvjzm!App",
};
// Note there are many more options that you can use to influence the app under test according to your needs
driver = new WindowsDriver(windowsOptions);
}
[OneTimeTearDown]
public void RunAfterAnyTests()
{
driver?.Quit();
// If an Appium server was started locally above, make sure we clean it up here
AppiumServerHelper.DisposeAppiumLocalServer();
}
}
Код: Выделить всё
using OpenQA.Selenium.Appium.Service;
namespace MauiBlazorWeb.AppiumPlaywright;
public static class AppiumServerHelper
{
private static AppiumLocalService? _appiumLocalService;
public const string DefaultHostAddress = "127.0.0.1";
public const int DefaultHostPort = 4723;
public static void StartAppiumLocalServer(string host = DefaultHostAddress,
int port = DefaultHostPort)
{
if (_appiumLocalService is not null)
{
return;
}
var builder = new AppiumServiceBuilder()
.WithIPAddress(host)
.UsingPort(port);
// Start the server with the builder
_appiumLocalService = builder.Build();
_appiumLocalService.Start();
}
public static void DisposeAppiumLocalServer()
{
_appiumLocalService?.Dispose();
}
}
Может ли кто-нибудь помочь мне с тем, как мы можем автоматизировать тестирование пользовательского интерфейса в гибридных приложениях .NET MAUI Blazor?
Я бы приложил выходные данные теста, но они превышают ограничение на количество символов для этого вопроса. Вы сможете увидеть это, если запустите мой тест локально.
Подробнее здесь: https://stackoverflow.com/questions/789 ... ybrid-apps
Мобильная версия