无需访问 Selenium 中的页面即可设置 Cookie
Posted
技术标签:
【中文标题】无需访问 Selenium 中的页面即可设置 Cookie【英文标题】:Setting Cookies without visiting a page in Selenum 【发布时间】:2018-03-25 00:37:39 【问题描述】:谁能向我解释如何使用带有 selenium 的壁虎驱动程序插件为未访问的域设置 cookie?我一直在尝试设置一个 cookie 以防止看到登录页面,但是 cookie 的域正在重定向,所以我无法通过访问它来设置它,也不知道该怎么做。
我已经尝试过了,但看起来我无法在 selenium 中指定它,因为我无法访问此页面。
Cookie cookie11 = new Cookie("SID",
"cookievalue",
".google.com",
"/",
expiry1,
false,
false);
找到了一个名为 Cookies Export/import 的插件,我正在尝试确定它是否可以用于从中导入 cookie。
任何帮助将不胜感激!
【问题讨论】:
Python 的同样问题:How to save and load cookies using Python + Selenium WebDriver - Stack Overflow -- 那里的大多数方法也应该可以工作。 【参考方案1】:如果您希望使用指定的扩展来执行此操作,我建议您查看How do you use a firefox plugin within a selenium webdriver program written in java? 上的 SO 答案,您应该会很好。
但是,我相信您可以使用addCookie()
方法在不使用扩展的情况下实现此目的。
WebDriver driver = new FirefoxDriver();
Cookie cookie = new Cookie("SID",
"cookievalue",
".example.com",
"/",
expiry1,
false,
false);
driver.manage().addCookie(cookie);
driver.get("http://www.example.com/login");
假设您的 cookie 详细信息是正确的,您应该能够通过登录重定向。
另请参阅: WebDriver – How to Restore Cookies in New Browser Window
【讨论】:
我之前浏览过该链接,它只显示了如何加载和指定版本,似乎找不到任何关于我如何在插件中触发操作的信息。我需要设置的 cookie 位于 .google 和 mail.google.com 上,所以当我访问它们时,它们要么已超时,要么已转发。从我能够找到的所有 cookie 必须从实际页面设置,所以不确定这是否会工作.. 我试过无济于事 不幸的是,像这样设置cookie会导致异常org.openqa.selenium.InvalidCookieDomainException: Document is cookie-averse
【参考方案2】:
你不能那样做。见https://w3c.github.io/webdriver/webdriver-spec.html#add-cookie
我用规范https://github.com/w3c/webdriver/issues/1238打开了这个问题
如果你想通过这个问题,你需要在没有这些验证的情况下重建浏览器:
以下是对 FireFox(木偶)进行的更改以通过此: https://gist.github.com/nddipiazza/1c8cc5ec8dd804f735f772c038483401
【讨论】:
以上是关于无需访问 Selenium 中的页面即可设置 Cookie的主要内容,如果未能解决你的问题,请参考以下文章