/// <summary> /// Sets the value of a Checkbox/TwoOption field on a QuickCreate form. /// </summary> /// <param name="option">TwoOption Name and Value</param> public new BrowserCommandResult <bool> SetValue(TwoOption option) { return(this.Execute(GetOptions($"Set QuickCreate TwoOption Value: {option.Name}"), driver => { if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Entity.CheckboxFieldContainer].Replace("[NAME]", option.Name.ToLower())))) { var fieldElement = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Entity.CheckboxFieldContainer].Replace("[NAME]", option.Name.ToLower()))); if (fieldElement.FindElements(By.TagName("label")).Count > 0) { var label = fieldElement.FindElement(By.TagName("label")); if (label.Text != option.Value) { fieldElement.Click(true); } } } else { throw new InvalidOperationException($"Unable to locate TwoOption field '{option.Name}' on the QuickCreate form. Please verify the TwoOption field exists and try again."); } return true; })); }
/// <summary> /// Gets the value of a Checkbox/TwoOption field on a QuickCreate form. /// </summary> /// <param name="option">The TwoOption field you want to set</param> /// <example>xrmBrowser.QuickCreate.GetValue(new TwoOption {Name="creditonhold"});</example> public BrowserCommandResult <bool> GetValue(TwoOption option) { return(this.Execute(GetOptions($"Get QuickCreate Checkbox/TwoOption Value: {option.Name}"), driver => { bool check = false; if (driver.HasElement(By.XPath(Elements.Xpath[Reference.Entity.CheckboxFieldContainer].Replace("[NAME]", option.Name.ToLower())))) { var fieldElement = driver.WaitUntilAvailable(By.XPath(Elements.Xpath[Reference.Entity.CheckboxFieldContainer].Replace("[NAME]", option.Name.ToLower()))); var select = fieldElement; var text = ""; if (fieldElement.FindElements(By.TagName("label")).Count > 0) { var label = fieldElement.FindElement(By.TagName("label")); text = label.Text; } if (fieldElement.TagName != "select") { select = fieldElement.FindElement(By.TagName("select")); } var options = select.FindElements(By.TagName("option")); foreach (var op in options) { if (op.Text.ToLower() == text.ToLower() || op.GetAttribute("title").ToLower() == text.ToLower()) { var value = Convert.ToInt32(op.GetAttribute("value")); check = Convert.ToBoolean(value); } } } else { throw new InvalidOperationException($"Unable to locate TwoOption field '{option.Name}' on the QuickCreate form. Please verify the TwoOption field exists and try again."); } return check; })); }