在我的cookie文件夹中,有很多文件cookies1.txt,cookies2.txt,...,下面是我的脚本,我尝试使用它登录带有cookie的facebook,每个cookie文件将加载并执行一个然后完成操作并执行下一个加载文件,当我逐个运行每个cookie时,效果很好,但是当我将它们全部放在一个文件夹中时,它似乎出现了错误,有人可以帮我吗?谢谢。
import os
import pickle
import selenium.webdriver
driver = selenium.webdriver.Firefox()
files = os.listdir("cookies")
for f in files:
cookies = pickle.load(open(f, "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
driver.get("http://www.facebook.com")
它显示:
Traceback (most recent call last):
File "C:/Users/tuong cat/AppData/Local/Programs/Python/Python37-32/Lib/site-packages/new.py", line 10, in <module>
driver.add_cookie(cookie)
File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 894, in add_cookie
self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Users\tuong cat\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidCookieDomainException: Message: Document is cookie-averse
答案 0 :(得分:2)
我认为您必须在打开URL后添加Cookie
driver.get("http://www.facebook.com")
for f in files:
cookies = pickle.load(open(f, "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
答案 1 :(得分:1)
1)您的cookie文件应以“ .pkl”扩展名。
2)您的文件应由pickle
程序包使用特定域下的Facebook凭据登录操作后生成。
3)您应该在特定域下加载Cookie文件。
在您的情况下,特定域为facebook.com
。
希望对您有帮助!
PS:这是我在Facebook上的工作示例:https://github.com/ratmirasanov/demo_test_automation_project/tree/master/login_with_using_cookies/。