在做selenium自动化测试的时候,我们验证一个页面的时候,可能要经过登陆,但是验证码的值往往非常难获取到,并且登陆并不在我们单个用例的测试范围之内,所以我们希望跳过登陆,直接进行页面的测试。
我一开始的思路的不经过代理服务,直接设置cookie,通过
Cookie ck = new Cookie("Cookie",finalCookieValue); mDriver.manage().addCookie(ck);
来实现,但是这样的操作会报错,报错信息不就不分享给大家了,大致内容就是不允许这样设置cookie。
后来的思路,通过BrowserMobProxy,代理设置hearders, 在头里设置cookie以达到越过登陆的效果。
话不多说,上代码。
package com.jd.pop.qa.base; import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpResponse; import net.lightbody.bmp.BrowserMobProxyServer; import net.lightbody.bmp.client.ClientUtil; import net.lightbody.bmp.filters.RequestFilter; import net.lightbody.bmp.util.HttpMessageContents; import net.lightbody.bmp.util.HttpMessageInfo; import org.openqa.selenium.Proxy; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import o