首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连续运行测试后无法识别SilkTest基本状态

连续运行测试后无法识别SilkTest基本状态
EN

Stack Overflow用户
提问于 2012-11-20 21:06:14
回答 1查看 1.9K关注 0票数 1

在我的测试环境中,我们有执行某些操作的类,其中一些使用SilkTest内容。测试过程是由XML文件定义的,我们解析这些文件,将其转换为ActionImpl类,并使用这些文件执行操作。例如,以下命令将登录到我们的应用程序,切换用户,然后重新启动服务器:

代码语言:javascript
复制
<Script refBean="validateState" retry="false">
    <DataGroups>
        <Step action="log" mod="5.10.13 - Step 1" />
        <Step action="switchUsers" target="mlane" />
        <Step action="restartServer" />
    </DataGroups>
</Script>

restartServer操作的情况下,代码最终调用以下方法,该方法使用运行测试的当前运行的eclipse.exe创建BaseState。

代码语言:javascript
复制
private PassFail restartServerInEclipse() {
    Desktop desktop = new Desktop();
    BaseState eclipseBaseState = new BaseState("*eclipse.exe", "/Shell[@caption='Java EE*']", TechDomain.SWT, TechDomain.XBROWSER, TechDomain.WIN32);
    desktop.executeBaseState(eclipseBaseState);
    // Do some stuff, like finding CTabItem objects, clicking them, etc.
    return passFail;
}

假设我正在运行当天的第一个测试。我刚开始工作,并决定运行一个测试。如果代码到达restartServer操作,并调用restartServerInEclipse(),它将识别当前正在运行的eclipse.exe,并成功地对我告诉它的任何Silk对象执行任何Silk方法。

但是,在没有退出Eclipse或Open Agent的情况下,在测试完成后,如果我再次运行相同的测试,就像在中一样,全新的对象,全新的测试线程,测试运行并停止,我再次单击Eclipse中的绿色run按钮,当它到达BaseState eclipseBaseState = new BaseState(...)代码时,我得到以下错误:

代码语言:javascript
复制
com.borland.silktest.jtf.common.LaunchApplicationFailedException: Failed to start application '*eclipse.exe' in working directory 'null'. The system cannot find the file specified.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.borland.silktest.jtf.agent.ExceptionTranslatorUtil.createException(ExceptionTranslatorUtil.java:60)
    at com.borland.silktest.jtf.agent.ExceptionTranslatorUtil.translate(ExceptionTranslatorUtil.java:37)
    at com.borland.silktest.jtf.agent.JtfModule.executeBaseState_aroundBody39$advice(JtfModule.java:121)
    at com.borland.silktest.jtf.agent.JtfModule.executeBaseState(JtfModule.java:1)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
    at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:77)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy24.executeBaseState(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
    at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:38)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
    at org.springframework.remoting.rmi.RmiBasedExporter.invoke(RmiBasedExporter.java:72)
    at org.springframework.remoting.rmi.RmiInvocationWrapper.invoke(RmiInvocationWrapper.java:72)
    at sun.reflect.GeneratedMethodAccessor12.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:47)
    at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:351)
    at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:258)
    at com.borland.silktest.startservice.RmiConnectionUtil$1.invoke(RmiConnectionUtil.java:134)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
    at $Proxy0.executeBaseState(Unknown Source)
    at com.borland.silktest.jtf.Agent.executeBaseState(Agent.java:452)
    at com.borland.silktest.jtf.BaseState.execute(BaseState.java:298)
    at com.borland.silktest.jtf.Desktop.executeBaseState(Desktop.java:69)
    at scripts.misc.validation.action.RestartServerActionImpl.restartServerInEclipse(RestartServerActionImpl.java:62)
    at scripts.misc.validation.action.RestartServerActionImpl.evaluate(RestartServerActionImpl.java:25)
    at scripts.misc.validation.ValidateState.evaluateStep(ValidateState.java:108)
    at scripts.misc.validation.ValidateState.script(ValidateState.java:131)
    at scripts.base.BaseScript.runWithRetries(BaseScript.java:204)
    at scripts.base.BaseScript.runIt(BaseScript.java:312)
    at suite.MainThread.script(MainThread.java:667)
    at suite.MainThread.run(MainThread.java:281)

两秒前工作完全正常的基本状态现在不正确了。就好像一旦初始设置了基本状态,Eclipse的某些方面就发生了变化,所以它不能重新识别它。

解决这个问题的唯一方法是重新启动Eclipse和Open Agent,但即使这样有时也不起作用,而且我偶尔会遇到OA的一些许可证服务器问题,这需要重新启动计算机。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-27 14:52:24

从您发布的日志文件中,我可以看到您正在测试eclipse.exeiexplore.exe之间切换。你的脚本当前的构建方式不是一个就是另一个。这意味着一旦您切换到Internet Explorer,Silk Test就会与Eclipse分离,并且不再识别该窗口。

因为您无论如何都是通过其他机制启动应用程序的,所以我建议使用attach方法,该方法是累积的,它将添加模式而不是替换模式,因此您可以避免在应用程序之间切换。

代码语言:javascript
复制
Desktop desktop = new Desktop();
desktop.attach("*\\eclipse.exe", TechDomain.SWT, TechDomain.XBROWSER, TechDomain.WIN32);
desktop.attach("*\\iexplore.exe", TechDomain.SWT, TechDomain.XBROWSER, TechDomain.WIN32);
Shell eclipse = desktop.find("/Shell[@caption='Java EE*']");
BrowserApplication browserApp = desktop.find("/BrowserApplication");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13473832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档