当前位置:   article > 正文

selenium指定谷歌用户,报错:Message: unknown error: failed to write prefs file

unknown error: failed to write prefs file

本地电脑谷歌浏览器有好几个谷歌用户账号,因需求需要用selenium打开指定的谷歌用户,但是报错:selenium.common.exceptions.WebDriverException: Message: unknown error: failed to write prefs file。

报错代码:

浏览器打开chrome://version/,个人资料路径为:C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Profile 19

获取--user-data-dir参数(所有用户目录)和--profile-directory参数(具体用户的文件夹名称)

  1. # -*- coding: utf-8 -*-
  2. from time import sleep
  3. from selenium import webdriver
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. from selenium.webdriver.support import expected_conditions as EC
  7. from selenium.webdriver.chrome.service import Service
  8. options = webdriver.ChromeOptions()
  9. # 步骤1获取到的User Data路径
  10. options.add_argument('--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data\\')
  11. # 步骤2获取到的--profile-directory值
  12. options.add_argument('--profile-directory=Profile 19')
  13. executable_path = "C:\Program Files\Google\Chrome\Application\chromedriver.exe"
  14. s = Service(executable_path)
  15. driver = webdriver.Chrome(service=s, options=options)
  16. driver.get("https://www.baidu.com/")
  17. sleep(3)
  18. driver.quit()

该写法是新的写法

  1. s = Service(executable_path)
  2. driver = webdriver.Chrome(service=s, options=options)

之前的写法是

driver = webdriver.Chrome(executable_path, options=options)

上述代码报错:

  1. selenium.common.exceptions.WebDriverException: Message: unknown error: failed to write prefs file
  2. Stacktrace:
  3. Backtrace:
  4. GetHandleVerifier [0x0025A813+48355]
  5. (No symbol) [0x001EC4B1]
  6. (No symbol) [0x000F5358]
  7. (No symbol) [0x00115183]
  8. (No symbol) [0x001152B5]
  9. (No symbol) [0x00112EAD]
  10. (No symbol) [0x00110579]
  11. (No symbol) [0x00140C55]
  12. (No symbol) [0x0014093C]
  13. (No symbol) [0x0013A536]
  14. (No symbol) [0x001182DC]
  15. (No symbol) [0x001193DD]
  16. GetHandleVerifier [0x004BAABD+2539405]
  17. GetHandleVerifier [0x004FA78F+2800735]
  18. GetHandleVerifier [0x004F456C+2775612]
  19. GetHandleVerifier [0x002E51E0+616112]
  20. (No symbol) [0x001F5F8C]
  21. (No symbol) [0x001F2328]
  22. (No symbol) [0x001F240B]
  23. (No symbol) [0x001E4FF7]
  24. BaseThreadInitThunk [0x76E46359+25]
  25. RtlGetAppContainerNamedObjectPath [0x777B7C24+228]
  26. RtlGetAppContainerNamedObjectPath [0x777B7BF4+180]
  27. (No symbol) [0x00000000]

解决方案:

网上寻找资料说是因为内存原因,需要复制出去,比如之前用户数据是在C盘里的,只需要复制到D盘里就好。

  1. # -*- coding: utf-8 -*-
  2. from time import sleep
  3. from selenium import webdriver
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. from selenium.webdriver.support import expected_conditions as EC
  7. from selenium.webdriver.chrome.service import Service
  8. options = webdriver.ChromeOptions()
  9. # 步骤1获取到的User Data路径
  10. options.add_argument('--user-data-dir=D:\\GooUserData')
  11. # 步骤2获取到的--profile-directory值
  12. options.add_argument('--profile-directory=Profile 19')
  13. executable_path = "C:\Program Files\Google\Chrome\Application\chromedriver.exe"
  14. s = Service(executable_path)
  15. driver = webdriver.Chrome(service=s, options=options)
  16. driver.get("https://www.baidu.com/")
  17. sleep(3)
  18. driver.quit()

遗留问题:

能够打开浏览器,但是cookie记录都不存在了,无法保留登录状态。需要改成debug,但是很麻烦,相关参考文章:https://blog.csdn.net/suntao1995/article/details/119559593

我已经切换其他的playwright工具,很用很多

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/304476
推荐阅读
相关标签
  

闽ICP备14008679号