Unicorn.UI.Web
4.1.0
dotnet add package Unicorn.UI.Web --version 4.1.0
NuGet\Install-Package Unicorn.UI.Web -Version 4.1.0
<PackageReference Include="Unicorn.UI.Web" Version="4.1.0" />
paket add Unicorn.UI.Web --version 4.1.0
#r "nuget: Unicorn.UI.Web, 4.1.0"
// Install Unicorn.UI.Web as a Cake Addin #addin nuget:?package=Unicorn.UI.Web&version=4.1.0 // Install Unicorn.UI.Web as a Cake Tool #tool nuget:?package=Unicorn.UI.Web&version=4.1.0
Unicorn.UI.Web
Implementation of browser interaction based on Selenium.
- Web Driver implementation
- Typified controls implementations
- PageObject implementation
- Abstract WebSite and pages pool
PageObject example
// Example of base web page.
// Page object supports inheritance, so all derived classes initialize controls described in base class also.
// Any page should be derived from WebPage
// Page properties like relative url and title could be specified using PageInfoAttribute
// Url property is implicitly used to navigate to the page from WebSite instance.
// Title property is implicitly used in page Opened property indicating
[PageInfo("test-ui-apps.html", "Test UI apps | Unicorn.TAF")]
public class ExamplePage : WebPage
{
// Creating page instance with <see cref="WebDriver"/> context.
public ExamplePage(WebDriver driver) : base(driver)
{
}
// Page object controls could either class properties or class fields (properties should have a setter).
[Name("Page title")]
[Find(Using.WebCss, "section[style *= block] h1.heading-separator")]
public WebControl MainTitle { get; set; }
// Each page object control could have readable name specified through NameAttribute.
// This generate human friendly ToString for the control and makes reports and logs more readable.
// Besides generic FindAttribute there are simlified shortcuts for locators:
// ByIdAttribute, ByClassAttribute, ByNameAttribute
[Name("Page header")]
[ById("hero")]
public WebControl Header { get; set; }
// If a control has the same locator across all the places, then the locator and the name could be
// specified for the control type using the same FindAttribute and NameAttribute.
// In such case the control also will be initialized with page object.
public ModalWindow Modal { get; set; }
public void WaitForLoading() =>
Header.Wait(Until.Visible, Timeouts.PageLoadTimeout);
}
Custom website implementation example
// Describes specific website implementation.
// The base website gives access to underlying WebDriver instance, provides with pages cache
// mechanism (to avoid page creation each time) and eases pages navigation.
// Some site specific actions and helpers could be placed here.
// The website should inherit WebSite
public class TestWebsite : WebSite
{
// Website creation based on existing explicitly created WebDriver instance.
// Should call base constructor.
public TestWebsite(WebDriver driver, string siteUrl) : base(driver, siteUrl)
{
}
// Website creation based on retrieved type of browser (WebDriver in this case is created automatically).
// Should call base constructor.
public TestWebsite(BrowserType browser, string siteUrl) : base(browser, siteUrl)
{
}
}
Page Pool use example
TestWebsite website = new TestWebsite(....);
// All you need to create a new website page is to call
ExamplePage page = website.GetPage<ExamplePage>();
// if the page was already created for current webdriver, existing instance will be returned
// otherwise new instance will be created
// To navigate directly to the page by it's url it's enough to call
ExamplePage page = website.NavigateTo<ExamplePage>();
Built-in matchers
ExamplePage page = website.GetPage<ExamplePage>();
Assert.That(page.MainTitle, UI.Control.HasText("'Hello World' app"))
Assert.That(page.TitleDropdown, UI.Dropdown.HasSelectedValue("Nothing selected"))
Assert.That(page.NameInput, UI.TextInput.HasValue(string.Empty))
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
.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
- Selenium.WebDriver (>= 4.10.0)
- Unicorn.UI.Core (>= 4.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Unicorn.UI.Web:
Package | Downloads |
---|---|
Unicorn.UI.Mobile
Unicorn.UI.Mobile is Unicorn test automation framework extension which provides ready for use implementations of interaction with Android app and web controls with extended capabilities. Unicorn Mobile features: Ready for use implementations of common controls, extended page object features. This package includes implementations of interaction based on Appium. |
GitHub repositories
This package is not used by any popular GitHub repositories.