diff --git a/src/Winium.Desktop.Driver/App.config b/src/Winium.Desktop.Driver/App.config
index d0feca6..4bfa005 100644
--- a/src/Winium.Desktop.Driver/App.config
+++ b/src/Winium.Desktop.Driver/App.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Winium.Desktop.Driver/Automator/Automator.cs b/src/Winium.Desktop.Driver/Automator/Automator.cs
index 88f8d25..87ab45c 100644
--- a/src/Winium.Desktop.Driver/Automator/Automator.cs
+++ b/src/Winium.Desktop.Driver/Automator/Automator.cs
@@ -1,5 +1,6 @@
namespace Winium.Desktop.Driver.Automator
{
+ using System;
#region using
using System.Collections.Generic;
@@ -63,7 +64,13 @@ public static Automator InstanceForSession(string sessionId)
{
if (sessionId == null)
{
- sessionId = "AwesomeSession";
+ Random random = new Random();
+ string randomNumber = string.Empty;
+ for (int i = 0; i < 10; i++)
+ {
+ randomNumber += random.Next(0, 10).ToString();
+ }
+ sessionId = randomNumber;
}
// TODO: Add actual support for sessions. Temporary return single Automator for any season
diff --git a/src/Winium.Desktop.Driver/Automator/Capabilities.cs b/src/Winium.Desktop.Driver/Automator/Capabilities.cs
index 8a6b2d7..5bd26ad 100644
--- a/src/Winium.Desktop.Driver/Automator/Capabilities.cs
+++ b/src/Winium.Desktop.Driver/Automator/Capabilities.cs
@@ -27,22 +27,22 @@ internal Capabilities()
#region Public Properties
- [JsonProperty("app")]
+ [JsonProperty("winium:app")]
public string App { get; set; }
- [JsonProperty("args")]
+ [JsonProperty("winium:args")]
public string Arguments { get; set; }
- [JsonProperty("debugConnectToRunningApp")]
+ [JsonProperty("winium:debugConnectToRunningApp")]
public bool DebugConnectToRunningApp { get; set; }
- [JsonProperty("innerPort")]
+ [JsonProperty("winium:innerPort")]
public int InnerPort { get; set; }
- [JsonProperty("keyboardSimulator")]
+ [JsonProperty("winium:keyboardSimulator")]
public KeyboardSimulatorType KeyboardSimulator { get; set; }
- [JsonProperty("launchDelay")]
+ [JsonProperty("winium:launchDelay")]
public int LaunchDelay { get; set; }
#endregion
diff --git a/src/Winium.Desktop.Driver/CommandExecutors/DoubleClickElementExecutor.cs b/src/Winium.Desktop.Driver/CommandExecutors/DoubleClickElementExecutor.cs
new file mode 100644
index 0000000..fae15bc
--- /dev/null
+++ b/src/Winium.Desktop.Driver/CommandExecutors/DoubleClickElementExecutor.cs
@@ -0,0 +1,17 @@
+namespace Winium.Desktop.Driver.CommandExecutors
+{
+ internal class DoubleClickElementExecutor : CommandExecutorBase
+ {
+ #region Methods
+
+ protected override string DoImpl()
+ {
+ var registeredKey = this.ExecutedCommand.Parameters["ID"].ToString();
+ this.Automator.ElementsRegistry.GetRegisteredElement(registeredKey).DoubleClick();
+
+ return this.JsonResponse();
+ }
+
+ #endregion
+ }
+}
diff --git a/src/Winium.Desktop.Driver/CommandExecutors/NewSessionExecutor.cs b/src/Winium.Desktop.Driver/CommandExecutors/NewSessionExecutor.cs
index e9b448a..9888db9 100644
--- a/src/Winium.Desktop.Driver/CommandExecutors/NewSessionExecutor.cs
+++ b/src/Winium.Desktop.Driver/CommandExecutors/NewSessionExecutor.cs
@@ -5,6 +5,7 @@
using System.Threading;
using Newtonsoft.Json;
+ using Newtonsoft.Json.Linq;
using Winium.Cruciatus;
using Winium.Cruciatus.Settings;
@@ -22,9 +23,13 @@ protected override string DoImpl()
{
// It is easier to reparse desired capabilities as JSON instead of re-mapping keys to attributes and calling type conversions,
// so we will take possible one time performance hit by serializing Dictionary and deserializing it as Capabilities object
- var serializedCapability =
- JsonConvert.SerializeObject(this.ExecutedCommand.Parameters["desiredCapabilities"]);
- this.Automator.ActualCapabilities = Capabilities.CapabilitiesFromJsonString(serializedCapability);
+ JObject cap =
+ JObject.Parse(
+ JsonConvert.SerializeObject(
+ this.ExecutedCommand.Parameters["capabilities"]));
+ var firstMatch = cap.SelectToken("firstMatch").First;
+ this.Automator.ActualCapabilities =
+ Capabilities.CapabilitiesFromJsonString(firstMatch.ToString());
this.InitializeApplication(this.Automator.ActualCapabilities.DebugConnectToRunningApp);
this.InitializeKeyboardEmulator(this.Automator.ActualCapabilities.KeyboardSimulator);
@@ -32,7 +37,8 @@ protected override string DoImpl()
// Gives sometime to load visuals (needed only in case of slow emulation)
Thread.Sleep(this.Automator.ActualCapabilities.LaunchDelay);
- return this.JsonResponse(ResponseStatus.Success, this.Automator.ActualCapabilities);
+ AutomatorResponse resp = new AutomatorResponse(this.Automator.Session, this.Automator.ActualCapabilities);
+ return this.JsonResponse(ResponseStatus.Success, resp);
}
private void InitializeApplication(bool debugDoNotDeploy = false)
@@ -56,4 +62,25 @@ private void InitializeKeyboardEmulator(KeyboardSimulatorType keyboardSimulatorT
#endregion
}
+
+ internal class AutomatorResponse
+ {
+ #region Constructors and Destructors
+
+ public AutomatorResponse(string sessionId, Capabilities capabilities)
+ {
+ this.SessionId = sessionId;
+ this.Capabilities = capabilities;
+ }
+ #endregion
+
+ #region Public Properties
+
+ [JsonProperty("sessionId")]
+ public string SessionId { get; set; }
+
+ [JsonProperty("capabilities")]
+ public Capabilities Capabilities { get; set; }
+ #endregion
+ }
}
diff --git a/src/Winium.Desktop.Driver/Properties/AssemblyInfo.cs b/src/Winium.Desktop.Driver/Properties/AssemblyInfo.cs
index a0f424a..563ec2a 100644
--- a/src/Winium.Desktop.Driver/Properties/AssemblyInfo.cs
+++ b/src/Winium.Desktop.Driver/Properties/AssemblyInfo.cs
@@ -34,5 +34,5 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.2.0.0")]
-[assembly: AssemblyFileVersion("1.6.0.*")]
+[assembly: AssemblyFileVersion("1.6.0")]
[assembly: AssemblyInformationalVersion("1.6.0")]
diff --git a/src/Winium.Desktop.Driver/UriDispatchTables.cs b/src/Winium.Desktop.Driver/UriDispatchTables.cs
index aa3e610..1eb994e 100644
--- a/src/Winium.Desktop.Driver/UriDispatchTables.cs
+++ b/src/Winium.Desktop.Driver/UriDispatchTables.cs
@@ -163,6 +163,9 @@ private void InitializeSeleniumCommandDictionary()
this.commandDictionary.Add(
DriverCommand.ClickElement,
new CommandInfo("POST", "/session/{sessionId}/element/{id}/click"));
+ this.commandDictionary.Add(
+ DriverCommand.DoubleClickElement,
+ new CommandInfo("POST", "/session/{sessionId}/element/{id}/doubleClickElement"));
this.commandDictionary.Add(
DriverCommand.GetElementText,
new CommandInfo("GET", "/session/{sessionId}/element/{id}/text"));
diff --git a/src/Winium.Desktop.Driver/Winium.Desktop.Driver.csproj b/src/Winium.Desktop.Driver/Winium.Desktop.Driver.csproj
index 1ad8823..ce17882 100644
--- a/src/Winium.Desktop.Driver/Winium.Desktop.Driver.csproj
+++ b/src/Winium.Desktop.Driver/Winium.Desktop.Driver.csproj
@@ -1,5 +1,6 @@
+
Debug
@@ -9,11 +10,13 @@
Properties
Winium.Desktop.Driver
Winium.Desktop.Driver
- v4.5.1
+ v4.8
512
..\
true
+
+
AnyCPU
@@ -39,23 +42,24 @@
..\packages\CommandLineParser.1.9.71\lib\net45\CommandLine.dll
- ..\packages\Newtonsoft.Json.6.0.8\lib\net45\Newtonsoft.Json.dll
+ ..\packages\Newtonsoft.Json.13.0.4\lib\net45\Newtonsoft.Json.dll
-
+
..\packages\NLog.3.1.0.0\lib\net45\NLog.dll
True
+
+ ..\packages\Selenium.WebDriver.4.44.0\lib\net462\Selenium.WebDriver.dll
+
+
+
-
- ..\packages\Selenium.WebDriver.2.53.1\lib\net40\WebDriver.dll
- True
-
..\packages\InputSimulator.1.0.4.0\lib\net20\WindowsInput.dll
@@ -69,6 +73,7 @@
+
@@ -153,6 +158,7 @@
This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+