执行Selenium后在temp目录下产生临时文件scoped_dir chrome_BITS

环境:Windows selenium 3.141.0 Python 3.8.10 Chrome 90.0.4430.212 ChromeDriver 90.0.4430.24

最近发现执行完Selenium脚本后,在个人的Temp目录下会有大量的临时文件夹。类似下面这样
image
image
image
image
C:\Users\Administrator\AppData\Local\Temp\chrome_url_fetcher_19412_239410040
C:\Users\Administrator\AppData\Local\Temp\chrome_BITS_16176_1439591952
C:\Users\Administrator\AppData\Local\Temp\scoped_dir7672_2014177749
经过查阅,chrome_url_fetcher和chrome_BITS文件夹下的都在下载某个插件。scoped_dir的则是因为启动webdriver的时候没有指定user data目录,所以在Temp目录下产生了一个临时的配置文件目录。正常来说,当执行完后用driver.quit()应该会退出的,但原先的代码执行时在还没到driver.quit()这一步时就已经失败退出,所以Temp目录下的文件没被删除。

改进:

  1. 使用conftest和yield,将webdriver的初始化,登录和关闭浏览器定义为function级别的fixture
    原代码:
def test_example():
    driver = Driver().openBrowser()
    login_page = LoginPage(driver)
    login_page.login()
   
    home_page = HomePage(driver)
    home_page.open_inventory()
    
    driver.quit()

新代码
conftest.py

@pytest.fixture(scope="function")
def driver():
    # 前置
    driver = Driver().openBrowser()
    login_page = LoginPage(driver)
    login_page.login()
    print("初始化完成...")
    yield driver
    # 后置
    driver.quit()
    print("关闭浏览器...")
def test_example(driver):
    home_page = HomePage(driver)
    home_page.open_inventory()
  1. 禁止浏览器插件更新 disable-component-update
class Driver:
    def openBrowser(self):
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument("start-maximized")
        chrome_options.add_argument("--disable-component-update")
        driver = webdriver.Chrome(options=chrome_options)
        return driver
posted @ 2021-06-07 17:21  努力学习的氧  阅读(12651)  评论(2编辑  收藏  举报