Hi,
for some reasons (one of them simpler test construction) I'd like to run the WPF app to be tested within the same process as the test runner, thus being able to access some interfaces in the running app, e.g. setting some properties in the ViewModel.
I suceeded to some degree by constructing the app instance in the preparation of the test, then running it in a separate thread and then doing a ConnectToApplication(Process.GetCurrentProcess()). Access to the ViewModel also works fine via Dispatcher.Invoke on the app's UI thread.
Summary:
01.
public
void
MyTest()
02.
{
03.
// run app in-process
04.
MyApp app;
05.
var dispatcher = DispatcherFactory.CreateDispatcher(
"Hugo"
, ApartmentState.STA);
06.
dispatcher.BeginInvoke(DispatcherPriority.Normal,
new
Action(() =>
07.
{
08.
app =
new
MyApp();
09.
app.Run();
10.
}));
11.
12.
// wait for app window
13.
var testApp = Manager.Current.ConnectToApplication(Process.GetCurrentProcess());
14.
var appWnd = testApp.WaitForWindow(
"MyApp"
);
15.
16.
// access some app API
17.
dispatcher.Invoke(DispatcherPriority.Normal,
new
Action(() => { SingletonInApp.Foo(); }));
18.
19.
// stimulate some UI action
20.
var theButton = appWnd.Find.ByAutomationId<Button>(
"a_idTheButton"
);
// <=== THIS FAILS
21.
theButton.User.Click();
22.
23.
// ...
24.
}
However, as soon as I subsequently use any method to find an UI element, it fails with the error shown below.
Is there any reason why the above construction would not work in general? How can I overcome that error?
System.ApplicationException : Exception thrown during the wait for a condition.
Error: Unexpected error while waiting on condition.
Error: ArtOfTest.WebAii.Silverlight.ExecuteSilverlightCommandException:
[WPF Extension Error] Details: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei Telerik.TestingFramework.XamlExtension.ClientServices.SerializeNode(DependencyObject root, StringBuilder sb, List`1 popups)
bei Telerik.TestingFramework.XamlExtension.ClientServices.SerializeAllVisualTrees()
bei Telerik.TestingFramework.XamlExtension.ClientProcessor.ProcessCommand(String command)
bei ArtOfTest.WebAii.Wpf.WpfProxy.ExecuteSLCommand(SilverlightCommand cmd)
bei ArtOfTest.WebAii.Wpf.WpfProxy.GetAllVisualTrees()
bei ArtOfTest.WebAii.Wpf.WpfWindow.RefreshVisualTrees()
bei ArtOfTest.WebAii.Silverlight.VisualFind.RefreshRoot()
bei ArtOfTest.WebAii.Silverlight.VisualWait.WaitForExistsByFindInfo(VisualFindInfo findInfo)
bei ArtOfTest.Common.WaitAsync._worker_DoWork[T,V](Object waitParam)
Stack Trace:
bei ArtOfTest.Common.WaitSync.CheckResult(WaitSync wait, String extraExceptionInfo, Object target)
bei ArtOfTest.Common.WaitSync.For[T](Predicate`1 predicate, T target, Boolean invertCondition, Int32 timeout, WaitResultType errorResultType)
bei ArtOfTest.WebAii.Silverlight.VisualWait.ForExistsInternal(Int32 timeout, Boolean invertCondition)
bei ArtOfTest.WebAii.Silverlight.VisualWait.ForVisible(Int32 timeout)
bei ArtOfTest.WebAii.Silverlight.VisualFind.ReturnOrThrow(FrameworkElement e, String throwMessage)
bei ArtOfTest.WebAii.Silverlight.VisualFind.ByAutomationId(String id, String xamlTag)
bei ArtOfTest.WebAii.Silverlight.VisualFind.ByAutomationId[T](String id)
Hi,
My company wants to use Telerik Testing Framework with no support. Is it possible and free? If yes, what should I download to get Telerik Testing Framework libraries?
Hi.
How can i send keys in element?
for example: i need to press 'Enter' key in text field.
ActiveBrowser.Desktop...SendString type text in address bar of IE.
I have a coded step that uses the LaunchNewBrowser(BrowserType.Firefox , true) and it works fine as a standalone but as soon as it gets placed in a nested test with data driven elements it stops working. When it runs the browser says "Extension loaded" and the Test runner remains stuck in this step. I have read a few similar posts and tried things like installing Visual Studio but nothing seems to work. This is a remote machine so I'm not sure if that has something to do with it.
Do you have any idea of what the problem could be?
Thanks
Hi,
I am using Telerik's latest version (Testing_Framework_2018_1_0418_2_Free) and extension (Progress® Test Studio® Chrome Execution) version (2017.2.823.0). When running the test using the chrome browser , it is saying - 'trying to connect' and after some time i am getting wait time out exception.
Please see the attached screenshots.
Is it possible to use the old telerik extension for chrome with lates telerik framework?
Hi Team,
I am automating the wpf application and trying to connect the already launched application using Manager class, which is working fine in Windows 7,but the same code is throwing null exception for Manager class in Windows 10 64 but machine, let me know what I am missing.
Regards,
Imran
I'm running unit tests in VS 2015.
The testing framework version is 2018.1.418.0
The Chrome extension is : Version 2018.1.54.1
When I begin a test the browser shows this URL and "Extension Loaded" in the window:
http://localhost:55222/WebUI/teststudio_start_page.html?port=55221&mode=0&loadingtimeout=50000
However, it just hangs there forever. If I disable the Chrome extension and then re-enable it I can successfully run one test but it will fail if I run it again.
I don't see anything in the browser console nor does the framework write to the log.
The code is pretty straightforward:
Settings settings = new Settings();
settings.LogAnnotations = true;
settings.QueryEventLogErrorsOnExit = false;
settings.LogLocation = "c:\\deleteme\\uiautomation";
settings.ClientReadyTimeout = 50000;
settings.CreateLogFile = true;
settings.AnnotateExecution = true;
settings.AnnotationMode = AnnotationMode.All;
settings.DisableDialogMonitoring = false;
try
{
using (Manager mngr = new Manager(settings))
{
mngr.Start();
mngr.LaunchNewBrowser(BrowserType.Chrome, true);
mngr.ActiveBrowser.NavigateTo("http://the site......");
mngr.ActiveBrowser.WaitUntilReady();
mngr.ActiveBrowser.WaitForAjax(5000);
mngr.ActiveBrowser.RefreshDomTree();
Element element = mngr.ActiveBrowser.Find.ById("some id");
mngr.ActiveBrowser.Actions.Click(element);
mngr.ActiveBrowser.Actions.SelectDropDown(element, "some id");
mngr.ActiveBrowser.Actions.InvokeEvent(element, ScriptEventType.OnChange);
......
......
}
Hi Team,
Do we need to install Telerik Testing Framework on a client machine? Or registering the required Telerik DLL's in GAC is sufficient to run the tests on a client machine?