Playwright.ReactUI.Controls.Extensions
3.2.0
Requires NuGet 2.12 or higher.
dotnet add package Playwright.ReactUI.Controls.Extensions --version 3.2.0
NuGet\Install-Package Playwright.ReactUI.Controls.Extensions -Version 3.2.0
<PackageReference Include="Playwright.ReactUI.Controls.Extensions" Version="3.2.0" />
<PackageVersion Include="Playwright.ReactUI.Controls.Extensions" Version="3.2.0" />
<PackageReference Include="Playwright.ReactUI.Controls.Extensions" />
paket add Playwright.ReactUI.Controls.Extensions --version 3.2.0
#r "nuget: Playwright.ReactUI.Controls.Extensions, 3.2.0"
#addin nuget:?package=Playwright.ReactUI.Controls.Extensions&version=3.2.0
#tool nuget:?package=Playwright.ReactUI.Controls.Extensions&version=3.2.0
Playwright.ReactUI.Controls.Extensions
Библиотека предоставляет набор расширений к Playwright.ReactUI.Controls, а также атрибуты для автозаполнения контролов в PageObjects и PageElements
Как использовать
Примеры для компонента Input:
await input.AppendTextAsync("newValue").ConfigureAwait(false);
- добавление значенияnewValue
к уже существующему в Inputawait input.WaitToBeVisibleAsync().ConfigureAwait(false);
- ожидание видимости компонента на страницеawait input.WaitToHaveValueAsync("TODO").ConfigureAwait(false);
- ожидание значенияTODO
в Input'e
AutoFillControlsAttribute
Чтобы воспользоваться атрибутом AutoFillControls необходимо следующее:
- Страница (PageObject) должна наследоваться от PageBase. Если у вас есть свой базовый класс страницы, то он должен наследовать PageBase
- Составной / сложный компонент (PageElement), т.е. контрол, который состоит из нескольких контролов (см. пример ниже), должен наследоваться от CompoundControlBase, а не ControlBase
- На PageObject / PageElement навесить атрибут [AutoFillControls]
Для заполнения самих контролов существует несколько атрибутов:
- RootByTid - ищет контрол по переданному data-tid'у
- RootByLocator - ищет контрол по переданному селектору (css / xpath)
- ChildByTid - ищет элемент списка по переданному data-tid'у; используется только для инициализации ControlList совместно с RootByTid / RootByLocator
- ChildByLocator - ищет элемент списка по переданному селектору (css / xpath); используется только для инициализации ControlList совместно с RootByTid / RootByLocator
Библиотека предоставляет возможность создать свой атрибут для заполнения контролов. Для этого надо реализовать IRootLocatorAttribute и(или) IChildLocatorAttribute (см. пример ниже)
Если появится желание реализовать свой атрибут, то лучше сначало прийти в меня. Возможно ваш атрибут лучше поместить в библиотеку
Если никакой атрибут заполнения контрола не указан, то AutoFillControls будет искать контрол по data-tid'у имени свойства
Примеры использования AutoFillControlsAttribute
// PageObject
[AutoFillControls]
public class TestPage : PageBase
{
public TestPage(IPage page)
: base(page)
{
}
// Контрол инициализируется с data-tid'ом Compound
public Compound Compound { get; init; }
// Контрол инициализируется с data-tid'ом LinkId
[RootByTid("LinkId")]
public Link Link { get; init; }
// Контрол инициализируется с локатором LocatorId (здесь может быть css / xpath)
[RootByLocator("LocatorId")]
public Input Input { get; init; }
}
// PageElement
[AutoFillControls]
public class Compound : CompoundControlBase
{
public Compound(ILocator rootLocator)
: base(rootLocator)
{
Button = new Button(rootLocator.GetByText("ButtonId"));
}
// Контрол инициализируется в конструкторе и не будет автозаполняться
[SkipAutoFillControl]
public Button Button { get; init; }
// Для создания списка необходимо указать Root* и Child* атрибуты. Child атрибут должен быть обязательно указан
[RootByTid("RootList")]
[ChildByLocator("ChildItem")]
public ControlList<Label> List { get; init; }
}
Пример реализации IRootLocatorAttribute
// Ищет контрол по GetByText
[AttributeUsage(AttributeTargets.Property)]
public class RootByTextAttribute : Attribute, IRootLocatorAttribute
{
public RootByTextAttribute(string selector) => Selector = selector;
public string Selector { get; }
public ILocator Resolve(ILocator locator) => locator.GetByText(Selector);
public ILocator Resolve(IPage page) => page.GetByText(Selector);
}
Минимальные требования
- netstandard2.0 / NET6
- Playwright 1.51.0
- @skbkontur/react-ui 4.25.2 (рекомендуется использовать последние версии)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Playwright.ReactUI.Controls (>= 3.1.1)
-
net6.0
- Playwright.ReactUI.Controls (>= 3.1.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
3.2.0 | 13 | 6/29/2025 |
3.1.1 | 88 | 6/26/2025 |
3.1.0 | 136 | 6/16/2025 |
3.0.0 | 130 | 6/15/2025 |
2.2.0 | 277 | 6/12/2025 |
2.1.0 | 282 | 6/11/2025 |
2.0.3 | 316 | 4/18/2025 |
2.0.2 | 846 | 2/14/2025 |
2.0.1 | 125 | 11/9/2024 |
2.0.0 | 115 | 11/9/2024 |
1.2.0 | 1,039 | 5/19/2024 |
1.1.1 | 115 | 5/17/2024 |
1.1.0 | 158 | 3/20/2024 |
1.0.0 | 158 | 3/19/2024 |