代码之家  ›  专栏  ›  技术社区  ›  Neil C. Obremski

Selenium/Chrome中的所有域都有delete_all_cookies()吗?

  •  0
  • Neil C. Obremski  · 技术社区  · 6 年前

    user-data-dir 以便浏览器具有持久缓存。问题是,它也会保留cookies,我想删除它们 先前的 到每个自动化运行。我发现唯一可靠的方法是从SQLite3数据库中删除所有记录 $USER_DATA_DIR/Default/Cookies

    Selenium webdrivers中有一个名为 delete_all_cookies() 但它只删除当前URL所在域的Cookie!

    有没有更好的方法或命令,我可以发送ChromeDriver,将清除 饼干?或者,我是否可以配置一个设置,使Chrome在退出和/或启动时删除cookie?

    2 回复  |  直到 6 年前
        1
  •  1
  •   ewwink    6 年前

    运行铬使用 incognito mode 还是私人浏览

    options = Options()
    options.add_argument("--incognito")
    driver= webdriver.Chrome(options=options)
    
        2
  •  1
  •   Nir    6 年前

    有一个解决办法:

    您可以使用Selenium浏览“chrome://settings/clearBrowserData“并使用该页面删除Cookie,如中所述 https://stackoverflow.com/a/28364624/2546759 .

    缺点是,这种页面布局在chrome版本之间有时会发生变化。

        3
  •  1
  •   Blaise    6 年前

    镀铬支架 DevTools Protocol commands 喜欢 Network.clearBrowserCookies

    但是,您可以通过如下方式修补Selenium支持的命令来添加对这些命令的支持:

    send_command = ('POST', '/session/$sessionId/chromium/send_command')
    driver.command_executor._commands['SEND_COMMAND'] = send_command
    

    现在您可以调用任何DevTools协议命令,如

    driver.execute('SEND_COMMAND', dict(cmd='Network.clearBrowserCookies', params={}))
    

    这将删除所有域的所有cookie。