in Microsoft.Dynamics365.UIAutomation.Api/XrmPage.cs [1188:1286]
public BrowserCommandResult<bool> SetValue(LookupItem control)
{
return this.Execute(GetOptions($"Set Lookup Value: {control.Name}"), driver =>
{
if (driver.HasElement(By.Id(control.Name)))
{
var fieldContainer = driver.WaitUntilAvailable(By.Id(control.Name));
if (fieldContainer.Text != "" && control.Value != null)
SelectLookup(control, true, false);
driver.WaitUntilVisible(By.Id(control.Name));
fieldContainer = driver.ClickWhenAvailable(By.Id(control.Name));
if (fieldContainer.FindElement(By.ClassName(Elements.CssClass[Reference.SetValue.LookupRenderClass])) == null)
throw new InvalidOperationException($"Field: {control.Name} is not lookup");
var lookupSearchIcon = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Entity.GetLookupSearchIcon].Replace("[NAME]", control.Name)));
if (Browser.Options.BrowserType != BrowserType.Firefox)
{
var lookupIcon = fieldContainer.FindElement(By.ClassName("Lookup_RenderButton_td"));
lookupSearchIcon = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Entity.GetLookupSearchIcon].Replace("[NAME]", control.Name)));
lookupIcon.Hover(driver);
lookupIcon.Click(true);
/*
lookupSearchIcon.Hover(driver, true);
lookupSearchIcon.Click(true);
var lookupSearchIconImage = driver.FindElement(By.TagName("img"));
lookupSearchIconImage.Hover(driver, true);
Actions clickAction = new Actions(driver).SendKeys(Keys.Enter);
clickAction.Build().Perform();
*/
}
else
{
var lookupIcon = fieldContainer.FindElement(By.ClassName("Lookup_RenderButton_td"));
lookupSearchIcon = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Entity.GetLookupSearchIcon].Replace("[NAME]", control.Name)));
lookupIcon.Hover(driver);
lookupIcon.Click(true);
}
var dialogName = $"Dialog_{control.Name}_IMenu";
var dialog = driver.WaitUntilAvailable(By.Id(dialogName));
var dialogItems = OpenDialog(dialog).Value;
if (dialogItems.Any())
{
var lookupMenuItem = dialogItems.Last();
lookupMenuItem.Element.Click();
}
if (control.Value != null)
{
SwitchToDialog();
driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Grid.FindCriteria]));
driver.FindElement(By.XPath(Elements.Xpath[Reference.Grid.FindCriteria])).Clear();
driver.FindElement(By.XPath(Elements.Xpath[Reference.Grid.FindCriteria])).SendKeys(control.Value);
driver.ClickWhenAvailable(By.XPath(Elements.Xpath[Reference.Grid.FindCriteriaImg]));
var itemsTable = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Grid.GridBodyTable]));
if (itemsTable.GetAttribute("totalrecordcount") == "0")
{
throw new InvalidOperationException($"No records are available in this view for the Search'{control.Value}'");
}
var tbody = itemsTable.FindElement(By.TagName("tbody"));
var items = tbody.FindElements(By.TagName("tr"));
foreach (var item in items)
{
var primary = item.FindElements(By.TagName("td"))[1];
if (primary.Text.Contains(control.Value))
{
var checkbox = item.FindElements(By.TagName("td"))[0];
if (item.GetAttribute("selected") != "true")
checkbox.Click();
break;
}
}
driver.ClickWhenAvailable(By.XPath(Elements.Xpath[Reference.LookUp.Begin]));
SwitchToContent();
}
else
throw new InvalidOperationException($"Field: {control.Name} Does not exist");
}
return true;
});
}