首页 > 解决方案 > 如何在 Selenium 的会话中正确添加 Cookie?(使用节点 JS)

问题描述

我已登录 Google 并将会话的 cookie 存储在 JSON 文件中。

我正在尝试创建一个 Selenium 会话并从这些 cookie 中恢复,以便我可以在这个新会话上登录到 Google。

使用 Puppeteer 时,我成功地恢复了我的会话,这段代码可以恢复我的会话:

const page = await driver.newPage()

try {
    await page.goto("https://google.com")
    //driver.manage().timeouts().pageLoadTimeOut(30, 
TimeUnit.SECONDS)
}
catch (err) {
    return console.log("ERROR WITH PROXY: " + err.message)
}

await page.setCookie(...cookies)

await page.reload()
await page.goto("https://google.com")

但是,当我尝试在 Selenium 中执行相同操作时,我没有收到任何错误,但在添加 cookie 并重新加载页面后我的会话没有恢复。代码如下:

var data = fs.readFileSync("Accounts.json")
var json = JSON.parse(data)
var options = new chrome.Options()
var cookiesProxies = GetAccount(json, account)

var arguments = SetOptions(cookiesProxies.proxy)
var cookies = cookiesProxies.cookies
options.addArguments(arguments)
var driver = new webdriver.Builder()
.withCapabilities(options)
.forBrowser("chrome")
.build()

await driver.get("https://google.com")

await driver.manage().addCookie(...cookies)

await driver.navigate().refresh()

我什至尝试将所有单独的 cookie 字典传递给该函数,但它仍然不起作用。

有任何想法吗?

标签: javascriptnode.jsselenium-webdriverselenium-chromedriver

解决方案


推荐阅读