Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for Set/Get Header Values #838

Merged
merged 3 commits into from
Apr 29, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -117,15 +117,6 @@
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets'))" />
<Error Condition="!Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets'))" />
</Target>
<Import Project="..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets" Condition="Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" />
<Import Project="..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets" Condition="Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
47 changes: 43 additions & 4 deletions Microsoft.Dynamics365.UIAutomation.Api.UCI/WebClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2256,6 +2256,7 @@ private static void TrySetTime(IWebDriver driver, IWebElement timeField, string
timeField.Clear();
timeField.Click();
timeField.SendKeys(time);
timeField.SendKeys(Keys.Tab);
},
d => timeField.GetAttribute("value").IsValueEqualsTo(time),
TimeSpan.FromSeconds(9), 3,
Expand Down Expand Up @@ -2387,6 +2388,7 @@ internal BrowserCommandResult<Field> GetField(string field)
Field returnField = new Field(driver.WaitUntilAvailable(By.XPath(AppElements.Xpath[AppReference.Entity.TextFieldContainer].Replace("[NAME]", field))));
returnField.Name = field;

driver.ClearFocus();
return returnField;
});
}
Expand All @@ -2410,7 +2412,7 @@ internal BrowserCommandResult<string> GetValue(string field)
var timefields = driver.FindElements(By.XPath(AppElements.Xpath[AppReference.Entity.FieldControlDateTimeTimeInputUCI].Replace("[FIELD]", field)));
if (timefields.Any())
{
text = $" {timefields.First().GetAttribute("value")}";
text += $" {timefields.First().GetAttribute("value")}";
}
}
}
Expand All @@ -2423,6 +2425,8 @@ internal BrowserCommandResult<string> GetValue(string field)
throw new Exception($"Field with name {field} does not exist.");
}

driver.ClearFocus();

return text;
});
}
Expand All @@ -2440,6 +2444,9 @@ public BrowserCommandResult<string> GetValue(LookupItem control)
var xpathToContainer = AppElements.Xpath[AppReference.Entity.TextFieldLookupFieldContainer].Replace("[NAME]", controlName);
IWebElement fieldContainer = driver.WaitUntilAvailable(By.XPath(xpathToContainer));
string lookupValue = TryGetValue(fieldContainer, control);

driver.ClearFocus();

return lookupValue;
});
}
Expand All @@ -2463,6 +2470,9 @@ public BrowserCommandResult<string[]> GetValue(LookupItem[] controls)
var xpathToContainer = By.XPath(AppElements.Xpath[AppReference.Entity.TextFieldLookupFieldContainer].Replace("[NAME]", controlName));
var fieldContainer = driver.WaitUntilAvailable(xpathToContainer);
string[] result = TryGetValue(fieldContainer, controls);

driver.ClearFocus();

return result;
});
}
Expand Down Expand Up @@ -2518,6 +2528,8 @@ internal BrowserCommandResult<string> GetValue(OptionSet control)
var xpathToFieldContainer = AppElements.Xpath[AppReference.Entity.OptionSetFieldContainer].Replace("[NAME]", controlName);
var fieldContainer = driver.WaitUntilAvailable(By.XPath(xpathToFieldContainer));
string result = TryGetValue(fieldContainer, control);

driver.ClearFocus();
return result;
});
}
Expand Down Expand Up @@ -2593,6 +2605,7 @@ internal BrowserCommandResult<bool> GetValue(BooleanItem option)
else
throw new InvalidOperationException($"Field: {option.Name} Does not exist");

driver.ClearFocus();
return check;
});
}
Expand Down Expand Up @@ -2624,6 +2637,7 @@ internal BrowserCommandResult<MultiValueOptionSet> GetValue(MultiValueOptionSet
returnValue.Values = labelItems.Select(x => x.Text).ToArray();
}

driver.ClearFocus();
return returnValue;
});
}
Expand Down Expand Up @@ -2664,6 +2678,8 @@ internal BrowserCommandResult<MultiValueOptionSet> GetValue(MultiValueOptionSet
var time = DateTime.Parse(strTime);

var result = date.AddHours(time.Hour).AddMinutes(time.Minute).AddSeconds(time.Second);

driver.ClearFocus();
return result;
}

Expand Down Expand Up @@ -2874,6 +2890,9 @@ internal BrowserCommandResult<string> GetHeaderValue(LookupItem control)
{
var xpathToContainer = AppElements.Xpath[AppReference.Entity.Header.LookupFieldContainer].Replace("[NAME]", controlName);
string lookupValue = ExecuteInHeaderContainer(driver, xpathToContainer, container => TryGetValue(container, control));

driver.ClearFocus(); // Close Header

return lookupValue;
});
}
Expand All @@ -2885,6 +2904,9 @@ internal BrowserCommandResult<string[]> GetHeaderValue(LookupItem[] controls)
return Execute(GetOptions($"Get Header Activityparty LookupItem Value {controlName}"), driver =>
{
string[] lookupValues = ExecuteInHeaderContainer(driver, xpathToContainer, container => TryGetValue(container, controls));

driver.ClearFocus(); // Close Header

return lookupValues;
});
}
Expand Down Expand Up @@ -2962,20 +2984,27 @@ internal BrowserCommandResult<bool> SetHeaderValue(string field, string value)

SetValue(field, value);

driver.ClearFocus(); // Close Header

return true;
});
}

internal BrowserCommandResult<bool> SetHeaderValue(LookupItem control)
{
var controlName = control.Name;
bool isHeader = true;
bool removeAll = true;
var xpathToContainer = AppElements.Xpath[AppReference.Entity.Header.LookupFieldContainer].Replace("[NAME]", controlName);
return Execute(GetOptions($"Set Header LookupItem Value {controlName}"),
driver => ExecuteInHeaderContainer(driver, xpathToContainer,
fieldContainer =>
{
TryRemoveLookupValue(driver, fieldContainer, control);
TryRemoveLookupValue(driver, fieldContainer, control, removeAll, isHeader);
TrySetValue(driver, fieldContainer, control);

driver.ClearFocus(); // Close Header

return true;
}));
}
Expand All @@ -2993,6 +3022,9 @@ internal BrowserCommandResult<bool> SetHeaderValue(LookupItem[] controls, bool c
TryRemoveLookupValue(driver, container, control);

TryToSetValue(driver, container, controls);

driver.ClearFocus(); // Close Header

return true;
}));
}
Expand All @@ -3006,6 +3038,9 @@ internal BrowserCommandResult<bool> SetHeaderValue(OptionSet control)
container =>
{
TrySetValue(container, control);

driver.ClearFocus(); // Close Header

return true;
}));
}
Expand All @@ -3018,6 +3053,8 @@ internal BrowserCommandResult<bool> SetHeaderValue(MultiValueOptionSet control)

SetValue(control);

driver.ClearFocus(); // Close Header

return true;
});
}
Expand All @@ -3030,6 +3067,8 @@ internal BrowserCommandResult<bool> SetHeaderValue(BooleanItem control)

SetValue(control);

driver.ClearFocus(); // Close Header

return true;
});
}
Expand Down Expand Up @@ -3087,7 +3126,7 @@ internal BrowserCommandResult<bool> ClearValue(LookupItem control, bool removeAl
});
}

private static void TryRemoveLookupValue(IWebDriver driver, IWebElement fieldContainer, LookupItem control, bool removeAll = true)
private static void TryRemoveLookupValue(IWebDriver driver, IWebElement fieldContainer, LookupItem control, bool removeAll = true, bool isHeader = false)
{
var controlName = control.Name;
fieldContainer.Hover(driver);
Expand All @@ -3104,7 +3143,7 @@ private static void TryRemoveLookupValue(IWebDriver driver, IWebElement fieldCon
var count = existingValues.Count;
fieldContainer.WaitUntil(x => x.FindElements(xpathDeleteExistingValues).Count > count);
}
else
else if (!isHeader && !success)
{
var xpathToHoveExistingValue = By.XPath(AppElements.Xpath[AppReference.Entity.LookupFieldHoverExistingValue].Replace("[NAME]", controlName));
var found = fieldContainer.TryFindElement(xpathToHoveExistingValue, out var existingList);
Expand Down
2 changes: 0 additions & 2 deletions Microsoft.Dynamics365.UIAutomation.Api.UCI/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
<package id="Microsoft.ApplicationInsights" version="2.11.0" targetFramework="net46" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
<package id="Otp.NET" version="1.2.1" targetFramework="net46" />
<package id="Selenium.Chrome.WebDriver" version="76.0.0" targetFramework="net46" />
<package id="Selenium.Firefox.WebDriver" version="0.24.0" targetFramework="net46" />
<package id="Selenium.Support" version="3.141.0" targetFramework="net46" />
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net46" />
<package id="System.Buffers" version="4.4.0" targetFramework="net46" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -124,15 +124,6 @@
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets'))" />
<Error Condition="!Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets'))" />
</Target>
<Import Project="..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets" Condition="Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" />
<Import Project="..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets" Condition="Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
2 changes: 0 additions & 2 deletions Microsoft.Dynamics365.UIAutomation.Api/packages.config
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Selenium.Chrome.WebDriver" version="76.0.0" targetFramework="net46" />
<package id="Selenium.Firefox.WebDriver" version="0.24.0" targetFramework="net46" />
<package id="Selenium.Support" version="3.141.0" targetFramework="net46" />
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net46" />
</packages>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,15 +107,6 @@
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets'))" />
<Error Condition="!Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets'))" />
</Target>
<Import Project="..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets" Condition="Exists('..\packages\Selenium.Firefox.WebDriver.0.24.0\build\Selenium.Firefox.WebDriver.targets')" />
<Import Project="..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets" Condition="Exists('..\packages\Selenium.Chrome.WebDriver.76.0.0\build\Selenium.Chrome.WebDriver.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
2 changes: 0 additions & 2 deletions Microsoft.Dynamics365.UIAutomation.Browser/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
Licensed under the MIT license.-->
<packages>
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net46" />
<package id="Selenium.Chrome.WebDriver" version="76.0.0" targetFramework="net46" />
<package id="Selenium.Firefox.WebDriver" version="0.24.0" targetFramework="net46" />
<package id="Selenium.Support" version="3.141.0" targetFramework="net46" />
<package id="Selenium.WebDriver" version="3.141.0" targetFramework="net46" />
</packages>