【问题标题】:How can I get cookies of all the domains using Selenium?如何使用 Selenium 获取所有域的 cookie?
【发布时间】:2019-11-22 17:51:45
【问题描述】:

我正在使用 Selenium 和 Laravel 进行自动测试。很好,但是cookies有问题。每次我为网站抓取运行自动测试时,我都必须登录。我想维护我的登录信息,所以我在 Selenium 中使用下面的代码来存储网站的 cookie 信息。

$driver->manage()->getCookies();

但是,多个域中有许多 cookie,但仅存储来自特定域的 cookie。 当前连接页面

我不知道如何在cookie列表中存储所有域的cookie。

【问题讨论】:

  • 您必须从每个域加载一个页面才能获取 cookie
  • 我能看到关于我的问题的示例代码吗.....???
  • @CoreyGoldberg 如果有些重定向是不可能的......您可以尝试获取 example.com 并保存 cookie,然后转到 www.example.com 并获取 cookie,但您实际上并没有获得 www .example.com cookie
  • 这可能与最近有关第三方 cookie 的更改有关。一种选择可能是降级您正在自动化的浏览器。您还可以查看其他人尝试过的一些东西。 stackoverflow.com/q/64281247/231316stackoverflow.com/q/64281247/231316
  • 您是在 laravel 项目中使用 www.example.com 和 ww1.example.com 等域的子域,还是使用非常不同的域(二级),如 foo.com 和 bar .com ?

标签: php laravel selenium selenium-webdriver cookies


【解决方案1】:

重复使用 cookie

如果您存储了来自域 example.com 的 cookie,则这些存储的 cookie 无法通过 webdriver 会话推送到任何其他不同的域,例如example.edu。存储的 cookie 只能在 example.com 内使用。此外,为了将来自动登录用户,您只需要存储一次 cookie,即用户在成功验证后登录应用程序时。在重新添加 cookie 之前,您需要浏览到收集 cookie 的同一域。


使用 Selenium Python 进行演示

例如,一旦用户在应用程序中登录,您就可以存储 cookie,如下所示:

from selenium import webdriver
import pickle

driver = webdriver.Chrome()
driver.get('http://demo.guru99.com/test/cookie/selenium_aut.php')
driver.find_element_by_name("username").send_keys("abc123")
driver.find_element_by_name("password").send_keys("123xyz")
driver.find_element_by_name("submit").click()

# storing the cookies
pickle.dump( driver.get_cookies() , open("cookies.pkl","wb"))
driver.quit()

以后任何时候如果你想让用户自动登录,你需要先浏览到特定的域/url,然后你必须添加cookies如下:

from selenium import webdriver
import pickle

driver = webdriver.Chrome()
driver.get('http://demo.guru99.com/test/cookie/selenium_aut.php')

# loading the stored cookies
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
    # adding the cookies to the session through webdriver instance
    driver.add_cookie(cookie)
driver.get('http://demo.guru99.com/test/cookie/selenium_cookie.php')

参考

您可以在以下位置找到详细讨论:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 2018-11-29
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2012-11-04
    相关资源
    最近更新 更多