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)