在自动化测试中怎么解决重开浏览器的烦恼

  • 场景:用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: