分类 默认分类 下的文章

selenium phantomjs java无界面浏览器环境搭建
java selenium搭建无界面浏览器

1.http://phantomjs.org/

下载windows版phantomjs

2.解压后bin目录下会有exe文件

40025-r9ul0icd84q.png

3.测试代码:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class test {

public static void main(String[] args) {
    // TODO Auto-generated method stub
//    System.setProperty("webdriver.gecko.driver", "C:\\Program Files (x86)\\Mozilla Firefox\\geckodriver.exe");
    System.setProperty("phantomjs.binary.path", "C:\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
//    WebDriver driver = new FirefoxDriver();
    WebDriver driver = new PhantomJSDriver();
    driver.get("http://www.baidu.com");
    System.out.println(driver.getCurrentUrl());
    

}

}

4.url成功打印
28506-yyx8dzu2av.png

/**
 * 应用完全启动后, Spring执行自定义初始化 此处初始化避免了初始化static时 bean还没注入的问题
 */
spirng mvc xml 文件
<!-- spring环境都初始化完成后执行的一些操作 -->
<bean id="instantiationListener" class ="com.xxx.xxx.web.base.InstantiationListener" />



import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; /** * 应用完全启动后, Spring执行自定义初始化 此处初始化避免了初始化static时 bean还没注入的问题 */ public class InstantiationListener implements InitializingBean { private static final Logger logger = LoggerFactory.getLogger(InstantiationListener.class); @Autowired private WechatAccessTokenService wechatAccessTokenService;// 这里注入不会有生存周期的问题 // ==>继承于InitializingBean 的afterPropertiesSet()方法是初始化方法. @Override public void afterPropertiesSet() { try { System.out.println("init.....初始化微信获取accessToken service...."); JwTokenAPI.wechatAccessTokenService = wechatAccessTokenService; //JwTokenAPI类的静态属性是wechatAccessTokenService } catch (Exception e) { logger.error("初始化微信获取accessToken service [wechatAccessTokenService] 异常"); } } }

  

	/**
	 * 功能:将http://example.com重定向至http://www.example.com
	 * */
	private static final String DOMAIN = "aaa.com";

	/**
	 * 在DispatcherServlet之前执行
	 * */
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
			Object handler) throws Exception {

		HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		HttpServletResponse httpServletResponse = (HttpServletResponse) response;
		// 获取域名
		String serverName = request.getServerName();
		// 获取请求路径
		String path = httpServletRequest.getRequestURI();
		//queryString 支持多参数 ?a=1&b=2#&c=22## 等
		String queryString = (httpServletRequest.getQueryString() == null ? "" : "?"+httpServletRequest.getQueryString());   // 获取路径中的参数
		int end = serverName.indexOf(DOMAIN);
		if (end!= -1 && end == 0) {  //判断是否是example.com,如果是通过ip地址访问暂时不处理 //end == -1 || end == 0(不是本域名都跳转)
			httpServletResponse.setStatus(301);
			httpServletResponse.setHeader( "Location", "http://www."+DOMAIN+path+queryString);
			httpServletResponse.setHeader( "Connection", "close" );
			return false;
		}


		return true;
	}

  

	JsonObject(com.alibaba.fastjson)返回值修改后,源对象的值也发生改变解决方法
	public  static  JSONObject   getObj(String keyParam){
		JSONObject res = =Map1.get(keyParam);
		if(res!=null){
		    //使用clone方法防止影响静态变量的值
			res = (JSONObject)res.clone(); //之所以 要clone是因为上层调用若修改返回的jsonObject里面的值,会影响map (静态变量的值) 
		}
		return  res;
	}

  

Using ArrayUtils.removeElement(Object[],Object)from org.apache.commons.lang is by far the easiest way to do this.int[] numbers = {1,2,3,4,5,6,7};//removing number 1
numbers =(int[])ArrayUtils.removeElement(numbers, 1); //1 是实际数组里面的值

当然也可以根据数组的索引进行移除,详情参考下方api



commons.apache.org library:Javadocs

免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。