- 场景:用selenium做自动化测试,每次都会开一个新的webdriver浏览器,这个浏览器是干净的,不带任何缓存,而大多数测试场景需要以登录作为前置条件,该如何解决这种问题?
- A:selenium中通过配置,可以复用浏览器,解决cookie问题。
以mac为例,windows配置环境变量略微有区别~
1.找到Chrome的启动路径,配置环境变量,重启terminal
export PATH=$PATH:/Applications/Google\ Chrome.app/Contents/MacOS/
2.退出所有的浏览器(这一步很重要,执行第三步时一定要退出所有浏览器,否则3无法启起来)
3.命令行启动远程浏览器Google\Chrome --remote-debuging-port=9222
端口不一定是9222,可以调整,只要不被占用就行,当localhost:9222是启动状态时,用例运行时就可以复用浏览器
4.运行测试代码,进行简单配置,就会在已有浏览器窗口中执行用例
from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def test_chrome():
"""
在已有浏览器中运行用例,先启动本地浏览器服务 Google\ Chrome --remote-debugging-port=9222
本地浏览器配置的端口需要和启动的浏览器端口保持一致
:return:
"""
option = Options()
option.debugger_address = "localhost:9222"
driver = webdriver.Chrome(options=option)
driver.get('https://www.baidu.com')
sleep(5)
以上配置完成之后,如果测试页面是登录状态,再执行该页面的case就能带上cookie了。
5.如果运行用例还是想用webdriver开一个新的不带缓存的浏览器,去掉配置就行
from time import sleep
from selenium import webdriver
def test_chrome():
"""
在已有浏览器中运行用例,先启动本地浏览器服务 Google\ Chrome --remote-debugging-port=9222
本地浏览器配置的端口需要和启动的浏览器端口保持一致
:return:
"""
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
sleep(5)