IE的JAVA驱动器jiffie

  好久没有发表文章了,自己都没有访问自己的JAVAEYE,总算空闲了,可以总结下以前项目自己觉得学到的一点好东西给大家了。这篇文章要讲的是jiffie,可能很多搞JAVA的对这个东西不是很熟悉,官方介绍是这样:
   a Java/JNI library which allows Microsoft Internet Explorer to be controlled from Java. The primary purpose of this library is to allow automated regression testing of web applications using a framework like JUnit.
 
  简单而言,就是JAVA代码驱动IE来做事情了。刚接触这个东西就很兴奋,因为在项目设计中这个东西真的帮了大忙。如果你想要用它来实现高效率的事件,我想可能有点困难,不过还是有实际用处的。入正题,先上代码。相关的包和使用的DLL文件都在附件中,一下是对重要的方法和代码做点介绍。
  // ie 设置代理 
 

private void setProxy(String proxy) {
    try {
	// Create a IEProxy instance
	IIEProxy ieProxy = IEProxy.getInstance();
	// setting proxy parameter
	String[] pxy = proxy.split(":");
	if (pxy != null && pxy.length == 2) {
         ieProxy.setSocksProxy(pxy[0].trim(),new Integer(pxy[1].trim()));
	  // Enable proxy
	   ieProxy.enableProxy();
	}} catch (IEProxyException e) {
	    e.printStackTrace();
	 }
	}

 

  以上就是写个方法创建一个设置了SOCKS代理的IE以备使用。接下来就创建InternetExplorer对象来进行模拟页面的访问了。 
  

InternetExplorer ie = new InternetExplorer(); 
  ie.setVisible(true); 
  ie.navigate("http://mail.google.com"); 
  ie.waitReallyWhileBusy(); 

 
  从英文单词的意思你应该可以看出我在做什么了吧。就是我上面说的,ie.waitReallyWhileBusy()的作用就是要等页面LOAD完毕。系统会把页面进行对象化处理,页面文档是IHTMLDocument2,图像是IHTMLImgElement,文本框是IHTMLInputElement,选择框是IHTMLSelectElement等等。当事物被对象化以后,就可以利用对象自带的属性很方法来完成你的业务逻辑了。
  比如: 
 

 inputElement = getInputElement("Name", "firstName"); 
  inputElement.setValue(info.getFirstName()); 

  if(checkError(document.getBody().getOuterText())){ 
     return; 
  } 
  private boolean checkError(String outerText) { 
    if(outerText.indexOf("An error has Occurred on this page")!=-1){ 
       return true; 
      } 
     return false; 
    }

  

  还有很多诸如此类的使用,这个要在充分了解本篇文章讲的事物:jiffie以后才会使用更爽啊!
  抛砖引玉,希望大家能在这个基础上掌握更多的东西,也希望这个玩意对大家有帮助。
  官方URL:http://jiffie.sourceforge.net/

 

你可能感兴趣的:(java,IE,jni,JUnit,Google)