diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
index f1edcc3c..cad8767e 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/DTO/AppElementReference.cs
@@ -113,6 +113,7 @@ public static class Entity
public static string SubGridRows = "Entity_SubGridRows";
public static string SubGridHeaders = "Entity_SubGridHeaders";
public static string SubGridRecordCheckbox = "Entity_SubGridRecordCheckbox";
+ public static string SubGridAddButton = "Entity_SubGridAddButton";
public static string FieldLookupButton = "Entity_FieldLookupButton";
public static string SearchButtonIcon = "Entity_SearchButtonIcon";
public static string EntityHeader = "Entity_Header";
@@ -357,6 +358,7 @@ public static class AppElements
{ "Entity_SubGridRows",".//div[contains(@class,'wj-row')]"},
{ "Entity_SubGridHeaders",".//div[contains(@class,'grid-header-text')]"},
{ "Entity_SubGridRecordCheckbox","//div[contains(@data-id,'cell-[INDEX]-1') and contains(@data-lp-id,'[NAME]')]"},
+ { "Entity_SubGridAddButton", "//button[contains(@data-id,'[NAME].AddNewStandard')]/parent::li/parent::ul[contains(@data-lp-id, 'commandbar-SubGridStandard:[NAME]')]" },
{ "Entity_FieldLookupButton","//button[contains(@data-id,'[NAME]_search')]" },
{ "Entity_SearchButtonIcon", "//span[contains(@data-id,'microsoftIcon_searchButton')]" },
{ "Entity_Header", "//div[contains(@data-id,'form-header')]"},
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/Entity.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/Entity.cs
index e88a0aea..b3428373 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/Entity.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/Elements/Entity.cs
@@ -296,6 +296,11 @@ public void OpenSubGridRecord(string subgridName, int index = 0)
_client.OpenSubGridRecord(subgridName, index);
}
+ public void AddSubgridItem(string subgridName)
+ {
+ _client.ClickSubgridAddButton(subgridName);
+ }
+
///
/// Saves the entity
///
diff --git a/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs b/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
index be870fd4..e3d57faa 100644
--- a/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
+++ b/Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
@@ -1257,8 +1257,16 @@ internal BrowserCommandResult OpenRecord(int index, int thinkTime = Consta
{
if (currentindex == index)
{
- var tag = checkRecord ? "div" : "a";
- row.FindElement(By.TagName(tag)).Click();
+ var tag = "div";
+ if (checkRecord)
+ {
+ row.FindElement(By.TagName(tag)).Click();
+ }
+ else
+ {
+ driver.DoubleClick(row.FindElement(By.TagName(tag)));
+ }
+
break;
}
@@ -1627,6 +1635,22 @@ public BrowserCommandResult ClickRelatedCommand(string name, string subNam
}
#endregion
+ #region Subgrid
+
+ public BrowserCommandResult ClickSubgridAddButton(string subgridName, int thinkTime = Constants.DefaultThinkTime)
+ {
+ Browser.ThinkTime(thinkTime);
+
+ return this.Execute(GetOptions($"Click add button of subgrid: {subgridName}"), driver =>
+ {
+ driver.FindElement(By.XPath(AppElements.Xpath[AppReference.Entity.SubGridAddButton].Replace("[NAME]", subgridName)))?.Click();
+
+ return true;
+ });
+ }
+
+ #endregion
+
#region Entity
internal BrowserCommandResult CancelQuickCreate(int thinkTime = Constants.DefaultThinkTime)