如何将Python的Selenium WebDriver中的所有cookie保存到txt文件,然后稍后加载?该文档没有对getCookies函数做太多说明。
如何将Python的Selenium WebDriver中的所有cookie保存到txt文件,然后稍后加载?该文档没有对getCookies函数做太多说明。
Answers:
您可以使用pickle将当前cookie保存为python对象。例如:
import pickle
import selenium.webdriver 
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
然后再将它们添加回去:
import pickle
import selenium.webdriver 
driver = selenium.webdriver.Firefox()
driver.get("http://www.google.com")
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    driver.add_cookie(cookie)
              drive.add_cookie再次尝试输入t时,我收到一条错误消息,提示“ expiry”键无效。我在Mac OS上使用chromedriver
                    当您需要从一个会话到另一个会话的cookie时,还有另一种方法可以使用Chrome选项user-data-dir,以便将文件夹用作配置文件,我运行:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
您可以在此处执行检查人机交互的登录,然后执行此操作,然后每次使用该文件夹启动Webdriver时都需要我现在需要的cookie。您还可以手动安装扩展,并在每个会话中使用它们。在我运行的第二个时间里,所有的cookie都在那里:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium") 
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see  the cookies, the settings, extensions, etc, and the logins done in the previous session are present here. 
好处是您可以使用具有不同设置和Cookie的多个文件夹,无需加载,卸载Cookie,安装和卸载扩展程序,更改设置,通过代码更改登录名的扩展程序,因此无法中断程序的逻辑,等等这比通过代码完成所有操作要快。
chrome_options = Options()给我name 'Options' is not defined...?
                    from selenium.webdriver.chrome.options import Options
                    请记住,您只能为当前域添加cookie。如果您想为您的Google帐户添加Cookie,请执行
browser.get('http://google.com')
for cookie in cookies:
    browser.add_cookie(cookie)
              基于@Eduard Florinescu的回答,但添加了更新的代码和缺少的导入:
$ cat work-auth.py 
#!/usr/bin/python3
# Setup:
# sudo apt-get install chromium-chromedriver
# sudo -H python3 -m pip install selenium
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
chrome_options.add_argument("user-data-dir=chrome-data") 
driver.get('https://www.somedomainthatrequireslogin.com')
time.sleep(30)  # Time to enter credentials
driver.quit()
$ cat work.py 
#!/usr/bin/python3
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('/usr/bin/chromedriver',options=chrome_options)
driver.get('https://www.somedomainthatrequireslogin.com')  # Already authenticated
time.sleep(10)
driver.quit()
              @Roel Van de Paar编写的代码仅作了少许修改,所有功劳都归功于他。我在Windows中使用它,并且在设置和添加Cookie方面都运行良好:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--user-data-dir=chrome-data")
driver = webdriver.Chrome('chromedriver.exe',options=chrome_options)
driver.get('https://web.whatsapp.com')  # Already authenticated
time.sleep(30)
              这是我在Windows中使用的代码,它有效。
 for item in COOKIES.split(';'):
            name,value = item.split('=',1)
            name=name.replace(' ','').replace('\r','').replace('\n','')
            value = value.replace(' ','').replace('\r','').replace('\n','')
            cookie_dict={  
                    'name':name,
                    'value':value,
                    "domain": "",  # google chrome
                    "expires": "",
                    'path': '/',
                    'httpOnly': False,
                    'HostOnly': False,
                    'Secure': False
                    }
            self.driver_.add_cookie(cookie_dict)