in Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs [1255:1342]
internal BrowserCommandResult<bool> ClickCommand(string name, string subname = null, string subSecondName = null, int thinkTime = Constants.DefaultThinkTime)
{
return Execute(GetOptions($"Click Command"), driver =>
{
// Find the button in the CommandBar
IWebElement ribbon;
// Checking if any dialog is active
if (driver.HasElement(By.XPath(string.Format(AppElements.Xpath[AppReference.Dialogs.DialogContext]))))
{
var dialogContainer = driver.FindElement(By.XPath(string.Format(AppElements.Xpath[AppReference.Dialogs.DialogContext])));
ribbon = dialogContainer.WaitUntilAvailable(By.XPath(string.Format(AppElements.Xpath[AppReference.CommandBar.Container])));
}
else
{
ribbon = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.Container]));
}
if (ribbon == null)
{
ribbon = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.ContainerGrid]),
TimeSpan.FromSeconds(5),
"Unable to find the ribbon.");
}
//Is the button in the ribbon?
if (ribbon.TryFindElement(By.XPath(AppElements.Xpath[AppReference.Entity.SubGridCommandLabel].Replace("[NAME]", name)), out var command))
{
command.Click(true);
driver.WaitForTransaction();
}
else
{
//Is the button in More Commands?
if (ribbon.TryFindElement(By.XPath(AppElements.Xpath[AppReference.Entity.SubGridCommandLabel].Replace("[NAME]", "More Commands")), out var moreCommands))
{
// Click More Commands
moreCommands.Click(true);
driver.WaitForTransaction();
//Click the button
if (ribbon.TryFindElement(By.XPath(AppElements.Xpath[AppReference.Entity.SubGridOverflowButton].Replace("[NAME]", name)), out var overflowCommand))
{
overflowCommand.Click(true);
driver.WaitForTransaction();
}
else
throw new InvalidOperationException($"No command with the name '{name}' exists inside of Commandbar.");
}
else
throw new InvalidOperationException($"No command with the name '{name}' exists inside of Commandbar.");
}
if (!string.IsNullOrEmpty(subname))
{
var submenu = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.MoreCommandsMenu]));
submenu.TryFindElement(By.XPath(AppElements.Xpath[AppReference.Entity.SubGridOverflowButton].Replace("[NAME]", subname)), out var subbutton);
if (subbutton != null)
{
subbutton.Click(true);
}
else
throw new InvalidOperationException($"No sub command with the name '{subname}' exists inside of Commandbar.");
if (!string.IsNullOrEmpty(subSecondName))
{
var subSecondmenu = driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.CommandBar.MoreCommandsMenu]));
subSecondmenu.TryFindElement(
By.XPath(AppElements.Xpath[AppReference.Entity.SubGridOverflowButton]
.Replace("[NAME]", subSecondName)), out var subSecondbutton);
if (subSecondbutton != null)
{
subSecondbutton.Click(true);
}
else
throw new InvalidOperationException($"No sub command with the name '{subSecondName}' exists inside of Commandbar.");
}
}
driver.WaitForTransaction();
return true;
});
}