如果我们的自动化case有几百条甚至一些大型项目有几千条case,每个case都要花几秒钟去登录(为什么一个简单的登录需要几秒钟,我甚至见过10秒左右才能login的项目,这种项目真实无力吐槽,大概原因是像淘宝、京东这样的对用户体验要求很高的ToC项目国内就那么几家,而我们做的绝大多数都是ToB的项目,自然不会花那么多时间在性能方面的提升上,这种ToB的专业用户也不会在乎那么几秒钟),那么将会大量时间在登录上,浪费时间会影响测试进度。那么怎样才能提升自动化测试项目的效率呢?至少在登录这一点上,我们可以将时间节约下来,每实例一个浏览器的时候都让local storage都带上token就能绕过登录,有的项目是设置cookie,其实大同小异。

首先不管是自动化亦或者是手动的方式,都需要将登录后的token拿到

1. 手动的方式很简单,F12打开浏览器的开发者模式。登录成功后,随便找一个请求找到里面的request header,将里面的authorization的值拷贝出来就可以作为token

2.自动化登录的方式,这种方式需要打开开发者模式点击application,再点击local storage就能看一个或者若干条键值对,类似于token,authorization等字眼的键,这个就是保证浏览器关掉再打开在token未失效时间内不会让你重复登录的原因,原来浏览器是将你登录后服务端返回的token存储起来了。假设你们项目对应的键是appAuthorization,那么如下命令即可获得token


String token=driver.getLocalStorage().getItem("appAuthorization")


//初始化Chrome浏览器driver
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
//设置为true表示无头模式运行,即不用打开浏览器
options.setHeadless(true);
ChromeDriver driver = new ChromeDriver(options);
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(30));
driver.get("https://example.url.cloud/");
//首次登录拷贝的token
String token="Bearer eyJhbGciOiJSU.............";
driver.getLocalStorage().setItem("appAuthorization", String.format("\"{\\\"appAuthorization\\\":\\\"%s\\\"}\"", token));
//如此一来,浏览器就直接进入web项目的主界面,而不会进入登录界面了,接下里就能进行各种各样的操作啦