Selenium之复用浏览器和Cookie获取
Selenium之复用浏览器和Cookie获取
复用已有浏览器
在执行UI自动化时,每次运行脚本都会弹出一个浏览器来,并且会从头执行,这样会带来的问题是,中间步骤如果出现问题则不好进行调试,使用复用浏览器可以从中间指定的页面进行以后的步骤执行。
配置Chrome浏览器环境变量
打开浏览器的debug模式,调试端口任意设置
1
2
3jingdeMacBook-Pro:~ apple$ chrome --remote-debugging-port=9222
DevTools listening on ws://127.0.0.1:9222/devtools/browser/4c3364f0-e9fd-4f73-b71d-63a76c08482e注意:
- 打开浏览器debug模式,把其他所有浏览器都关掉
- 已打开的debug模式的浏览器不要关闭
在脚本中加入调试参数
1
2
3ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress","127.0.0.1:9222");
driver = new ChromeDriver(options);
Chrome浏览器Mac环境变量配置
查看Chrome浏览器的启动文件,路径:/Applications/Google\ Chrome.app/Contents/MacOS 注意:空格地方加斜杠
1
2
3jingdeMacBook-Pro:~ apple$ cd /Applications/Google\ Chrome.app/Contents/MacOS
jingdeMacBook-Pro:MacOS apple$ ls
Google Chrome配置环境变量,sudo vim ~/.bash_profile,配置以下内容
1
2配置环境变量路径,并起个别名,注意转义符\和space
alias chrome='/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
source ~/.bash_profile配置文件生效即可,并进行验证
1
2
3jingdeMacBook-Pro:~ apple$ source ~/.bash_profile
jingdeMacBook-Pro:~ apple$ chrome --version
Google Chrome 86.0.4240.198
获取Cookie
方法一:通过WebDriver获取Cookie
方法二:通过JS获取Cookie
1 | console.log(document.cookie) |
注意:这种方式取出的cookie值不准确,需要找到接口的请求获取到对应的cookie
使用awk处理cookie格式,得到我们需要的内容
awk命令:
1 | echo "{cookie}" | awk 'BEGIN{RS="; ";FS="="}{print "driver.manage().addCookie(new Cookie(\""$1"\", \""$2"\"));"}' |
实例
1 | jingdeMacBook-Pro:~ apple$ echo "pgv_pvid=965326920; wwrtx.c_gdpr=0; pac_uid=0_aee823a5acb34; wwrtx.i18n_lan=zh; _ga=GA1.2.486968943.1606468059; wwrtx.ref=direct; wwrtx.refid=4250759204197565; wwrtx.ltype=1; wxpay.corpid=1970324947149288; wxpay.vid=1688850129600022; wwrtx.vid=1688850129600022; ww_rtkey=1166bq8; Hm_lvt_9364e629af24cb52acc78b43e8c9f77d=1606468059,1606468075,1606469576,1606714819; Hm_lpvt_9364e629af24cb52acc78b43e8c9f77d=1606714819; _gid=GA1.2.1004022239.1606714820; wwrtx.d2st=a532885; wwrtx.sid=6QnZz9M3D9-XwaqXVRhlplYnrydnCorqqH61w8jMbhRbcTni27ASNi5GwQRoRc5t; wwrtx.vst=ls7NqhOyvl2ER2hxI3QOsG8TBvjH-uVP7U8ymdRREjZQ5t5Nagz1nbTVjEPlAmowyB1hK90UquW63nmuOgtSNryFZYa916K9L8enRAa-RMt73xWiFHBYjCToPxoNsUD38YMpiVYPLsLdTrlR0oIuBSZmznOonOYr8i7W5KoCVfyeV6QK0QesguC5GqNjDGq9btyGaDpKJr18dE_j-Hl0FrVmGMig4VJhv_UKNHEYKQtTEsu3uFCfTquGCh1VUZZQfxs2w_aLM4_5flndp7EVEg" | awk 'BEGIN{RS="; ";FS="="}{print "driver.manage().addCookie(new Cookie(\""$1"\", \""$2"\"));"}' |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jing's Blog!