我这里使用的是Gson 和 httpclient
首先,起一个remote sever
java -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-2.48.0.jar |
这里要用到httpclient的Post 和delete method
创建一个httpclient对象
HttpClient httpClient = HttpClients.createDefault(); |
创建一个post请求
JsonObject setCapability = new JsonObject(); setCapability.addProperty("browserName","firefox"); JsonObject capability = new JsonObject(); capability.add("desiredCapabilities",setCapability); HttpPost httpPost = new HttpPost(base); |
创建一个delete 请求
url = base + sessionId ; HttpDelete httpDelete = new HttpDelete(url); |
从respose 中获取session ID
HttpResponse response = httpClient.execute(httpPost); try { HttpEntity entity = response.getEntity(); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); String resultEntity = EntityUtils.toString(entity); System.out.println("Response content: " + resultEntity); JsonObject result= new JsonParser().parse(resultEntity).getAsJsonObject(); JsonElement sessionIdJson = result.get("sessionId"); if(!sessionIdJson.isJsonNull()) sessionId =sessionIdJson.getAsString(); JsonElement valueJson = result.get("value"); if(!valueJson.isJsonNull()) { JsonObject tm=valueJson.getAsJsonObject(); JsonElement elementIdJson = tm.get("ELEMENT"); if(elementIdJson!=null) elementId=elementIdJson.getAsString(); } } } finally { ((Closeable) response).close(); } |
运行效果:
了解selenium 原理究竟有什么意义?
大多数人都会使用selenium去做自动化,但是不是每个人都了解selenium的原理,如果能掌握selenium原理。
可以改造selenium API,使用webdriver protocol去做一些能够完善自动化测试框架的事情。
比如,也许你在selenium自动化过程中会遇到get打开页面打不开,为了保证你脚本的健壮性,这时候你可以加入一段httprequest去获取。
response的的关键值判断,如果不是2开头的可以设置refresh,再比如需要做一些准备性工作,比如环境配置也可以使用。
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。