- 点击webdriver中的jnlp文件链接,将jnlp文件保存到磁盘;
- 从jnlp运行webstart应用;
- 捕获打开的应用程序并将其用于测试。
可以通过使用以下库来完成:
- netx(http://jnlp.sourceforge.net/netx/)-用于从jnlp运行Webstart应用程序
- uispec4j(http://www.uispec4j.org/)-用于拦截创建的Webstart窗口和 *** 作窗口元素
您可能可以使用其他AWT /
Swing测试工具完成相同的技巧,但是uispec4j允许拦截从jnlp执行的webstart应用程序,您不需要通过调用main()来运行该应用程序,也不需要拥有webstart测试代码存储库中的应用源代码。我在与其他库(包括Jemmy)实现此问题时遇到了问题。
这是对我有用的东西:
import java.io.File; import javax.swing.JTextField; import netx.jnlp.JNLPFile;import netx.jnlp.Launcher;import org.junit.Assert;import org.junit.Test;import org.uispec4j.Trigger;import org.uispec4j.UISpecAdapter;import org.uispec4j.UISpecTestCase;import org.uispec4j.Window;import org.uispec4j.interception.WindowInterceptor;public class WebstartTest extends UISpecTestCase { @Test public void test() throws Exception { // click your webdriver link, save the jnlp file to disk final File file = new File("file.jnlp"); final JNLPFile jnlp = new JNLPFile(file.toURI().toURL()); // adapter is a UISpec4j way to allow capturing windows created in // non-standard way, exactly what we need. this.setAdapter(new UISpecAdapter() { @Override public Window getMainWindow() { return WindowInterceptor.run(new Trigger() { @Override public void run() throws Exception { // running jnlp by netx launcher Launcher launcher = new Launcher(); launcher.setCreateAppContext(false); launcher.launch(jnlp); } }); } }); Window w = this.getMainWindow(); // verify if window's components are there Assert.assertEquals("text", ((JTextField) w.getSwingComponents(JTextField.class)[0]).getText()); // manipulate window components... }}
注意:uispec4j将截取该窗口,因此它将不可见。对我来说这不是问题,所以我没有调查是否可以看到它。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)