我正在使用Teleriks Test Studio的试用版,并且在我的Silverlight应用程序中遇到了问题。我的测试是登录,然后尝试从数据源添加100个新用户。我已多次运行测试,每次失败时,它似乎都做同样的事情:它遇到了Unable to locate element
错误,但我的理解是如果它失败了,它应该重新启动测试。然而,这种情况并非如此。相反,它只是坐在那里,无法找到任何其他元素
我应该说这是一个不一致的错误;这始终处于测试的不同阶段。有时它会完美地运行10个测试,然后下一个将失败。
有没有办法让close current browser and open new browser
失败,甚至添加一个步骤来关闭并打开浏览器作为第一步?如何在浏览器没有响应时关闭并重新打开浏览器?
答案 0 :(得分:1)
来自Telerik的帮助论坛:
[Setup]
if (Manager.Current.Browsers.Count > 1)
{
Helpers.KillBrowserProcesses(_browserType);
}
if (ActiveBrowser == null || !Process.GetProcessesByName(_processName).Any())
{
var retries = 0;
bool browserOpened;
do
{
try
{
browserOpened = true;
Manager.LaunchNewBrowser(_browserType, true, ProcessWindowStyle.Maximized);
retries = 0;
}
catch
{
retries++;
browserOpened = false;
Console.WriteLine("Restarting the browser. Retry {0} of {1}", retries,
Configuration.Instance.BrowserOpeningRetries);
if (Manager.Browsers.Count <= 0) continue;
Helpers.KillBrowserProcesses(_browserType);
//foreach (var browser in Manager.Browsers)
// browser.Close();
//if (ActiveBrowser != null)
// ActiveBrowser.Close();
}
}
while (retries < Configuration.Instance.BrowserOpeningRetries && browserOpened == false);
}
public static void KillBrowserProcesses(BrowserType browserType)
{
var browserProcesses = new Process[] {};
switch (browserType)
{
case BrowserType.FireFox:
browserProcesses = Process.GetProcessesByName("firefox");
break;
case BrowserType.InternetExplorer:
browserProcesses = Process.GetProcessesByName("iexplore");
break;
}
foreach (var browserProcess in browserProcesses)
{
try
{
browserProcess.Kill();
browserProcess.WaitForExit();
}
catch
{}
}
}