Aurora.Workflows.Tasks.Selenium
0.5.1.22
See the version list below for details.
dotnet add package Aurora.Workflows.Tasks.Selenium --version 0.5.1.22
NuGet\Install-Package Aurora.Workflows.Tasks.Selenium -Version 0.5.1.22
<PackageReference Include="Aurora.Workflows.Tasks.Selenium" Version="0.5.1.22" />
<PackageVersion Include="Aurora.Workflows.Tasks.Selenium" Version="0.5.1.22" />
<PackageReference Include="Aurora.Workflows.Tasks.Selenium" />
paket add Aurora.Workflows.Tasks.Selenium --version 0.5.1.22
#r "nuget: Aurora.Workflows.Tasks.Selenium, 0.5.1.22"
#:package Aurora.Workflows.Tasks.Selenium@0.5.1.22
#addin nuget:?package=Aurora.Workflows.Tasks.Selenium&version=0.5.1.22
#tool nuget:?package=Aurora.Workflows.Tasks.Selenium&version=0.5.1.22
Aurora Workflows
A versatile C# workflow engine designed to streamline task management. Easily define and execute workflows with built-in tasks or customize your own to fit specific needs. Perfect for automating processes and improving efficiency in any application.
Project website: https://aurora.unex.me/workflows
Features
- Generic Workflow Management: Create and manage workflows with ease.
- Built-in Tasks: Use predefined tasks for common operations.
- Custom Tasks: Define your own tasks to handle specific requirements.
- Extensible: Easily extend the engine to fit your unique use cases.
- Simple Integration: Integrate seamlessly with your existing C# applications.
Getting Started
Installation
You can install the workflow engine via NuGet Package Manager:
dotnet add package Aurora.Workflows
dotnet add package Aurora.Workflows.Tasks # 70+ built-in tasks
dotnet add package Aurora.Workflows.Fluent # fluent builder API
dotnet add package Aurora.Workflows.Contracts # only this is needed to write custom tasks
Building and running a workflow (Fluent API)
A root StartTask is created automatically. String arguments are expression-capable: plain text, or a C# expression that is evaluated by Roslyn at runtime.
using Aurora.Workflows.Fluent;
using Aurora.Workflows.Tasks;
var workflow = FluentWorkflow
.Create("Daily Report")
.TriggerOnSchedule("0 0 7 * * ?") // Quartz cron: every day at 07:00
.Set("hour", "DateTime.Now.Hour") // SetVariableTask – always an expression
.If("context.Get<int>(\"hour\") < 12",
then: t => t.Print("Good morning!"),
@else: t => t.Print("Hello!"))
.ReadFile(@"C:\data\report.txt", outputVariable: "report")
.Do<GreetTask>(t => t.Greeting = "=context.Get<string>(\"report\")") // custom task, see below
.WithOutput("greeting")
.Retry(TimeSpan.FromSeconds(5), maxRetries: 3)
.WriteFile(@"C:\data\greeting.txt", inputVariable: "greeting")
.Build();
await workflow.StartAsync();
// Persist / restore as JSON
string json = FluentWorkflow.Create("Persisted").TriggerOnce().Print("Hi").Persist();
var restored = FluentWorkflow.Load(json).Build();
Writing a custom task
Derive from WorkflowTaskBase. Every string property of a task may contain plain text or a C# expression prefixed with = – the user decides in the designer. Therefore such properties are never read directly but passed through Resolve<T>(), which returns plain text as-is and compiles/evaluates = expressions (e.g. =context.Get<string>("userName")). Data flows between tasks via GetInput<T>() / SetOutput(), which honour scope and variable-name settings.
using System.ComponentModel;
using System.Threading.Tasks;
using Aurora.Workflows.Contracts;
using Aurora.Workflows.Contracts.Attributes;
[WorkflowTaskCategory("My Category")]
[WorkflowTaskInputDefinition(typeof(string), Description = "The name to greet (output of the previous task).")]
[WorkflowTaskOutputDefinition(typeof(string), IsDefault = true, Description = "The composed greeting text.")]
public sealed class GreetTask : WorkflowTaskBase
{
// Expression-capable: "Hello" (plain text) or
// "=DateTime.Now.Hour < 12 ? \"Good morning\" : \"Hello\"" (evaluated at runtime).
[Description("Greeting prefix. Plain text or a '=' prefixed C# expression.")]
public string Greeting { get; set; } = "Hello";
// Non-string properties are used directly.
public bool Exclaim { get; set; } = true;
public GreetTask() { Name = "Greet Task"; }
protected override Task<bool> DoAsync(IWorkflowDataContext context)
{
var name = GetInput<string>(context) ?? "World"; // previous task's output
var greeting = Resolve<string>(Greeting, context); // text or evaluated expression
SetOutput(context, $"{greeting}, {name}{(Exclaim ? "!" : ".")}");
return Task.FromResult(true);
}
protected override Task<bool> DoSetupAsync() => Task.FromResult(true); // before first run
protected override Task<bool> DoTearDownAsync() => Task.FromResult(true); // on workflow stop
}
Scope tasks with child tasks (loops, conditionals, transactions) derive from TransactionScopeTaskBase instead. Full documentation: https://aurora.unex.me/workflows
Tip: developing custom tasks in a class library? Add a reference to
Aurora.Workflows.UI.Hostso pressing F5 opens the visual designer with your project already loaded for interactive debugging.
License
Aurora Workflows is free to use in full for non-commercial projects. For commercial use, please get in touch to discuss licensing terms; redistribution, modification, decompilation, reverse-engineering, or publication of the software without explicit written permission is strictly prohibited.
| 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. 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
- Aurora.Workflows (>= 0.5.1.22)
- Aurora.Workflows.Contracts (>= 0.5.1.22)
- Aurora.Workflows.Tasks (>= 0.5.1.22)
- Microsoft.Win32.Registry (>= 5.0.0)
- Selenium.Support (>= 4.49.0)
- Selenium.WebDriver (>= 4.49.0)
- Selenium.WebDriver.ChromeDriver (>= 153.0.8010.4700)
- Selenium.WebDriver.MSEdgeDriver (>= 151.0.4129.59)
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 |
|---|---|---|
| 0.5.1.24 | 41 | 9/18/2026 |
| 0.5.1.23 | 43 | 9/18/2026 |
| 0.5.1.22 | 44 | 9/17/2026 |
| 0.5.1.20 | 55 | 9/16/2026 |
| 0.5.1.19 | 65 | 9/16/2026 |
| 0.5.1.15 | 82 | 9/15/2026 |
| 0.5.1.10 | 84 | 9/14/2026 |
| 0.5.1.4 | 130 | 9/7/2026 |
| 0.5.1.1 | 109 | 9/3/2026 |
| 0.4.1.30 | 99 | 9/3/2026 |
| 0.4.1.29 | 100 | 8/27/2026 |
| 0.4.1.22 | 104 | 8/12/2026 |
| 0.4.1.21 | 111 | 8/4/2026 |
| 0.4.1.20 | 117 | 7/23/2026 |
| 0.4.1.19 | 122 | 7/16/2026 |
| 0.4.1.18 | 129 | 6/27/2026 |
| 0.4.1.16 | 125 | 6/26/2026 |
| 0.4.1.14 | 130 | 5/11/2026 |
| 0.4.1.12 | 126 | 5/9/2026 |
| 0.4.1.11 | 113 | 5/6/2026 |