【问题标题】:Selenium not getting the defined cookies from the siteSelenium 未从站点获取定义的 cookie
【发布时间】:2021-04-22 19:14:16
【问题描述】:

我有一个网站在浏览器上存储 cookie,语言 = en 我尝试通过 selenium 使用 java 代码输出所有 cookie,

ChromeDriver driver = new ChromeDriver();
driver.navigate().to(url);
System.out.println(driver.manage().getCookies());

但我没有任何运气能够获得我在我的网站中定义的 cookie。我尝试使用 geckodriver 和 chromedriver,结果都没有得到 cookie 的键和值。 如何启用 cookie,以便我可以在我的网站上获取所有定义的 cookie。我知道下面的链接 StackOverFlow 会禁用 cookie,但如何启用它。

此外,我通过 chrome 浏览器正常访问该站点能够从应用程序存储中读取 cookie,但在 Firefox 中,存储中仍然没有这些 cookie 键/值,可能是由于默认设置为不接受任何饼干。感谢您的帮助。

【问题讨论】:

    标签: java selenium selenium-webdriver cookies selenium-chromedriver


    【解决方案1】:

    我在您的代码块中没有看到任何问题。也许在收集和打印 cookie 之前,您需要为 visible 元素诱导 visibilityOfElementLocated()WebDriverWait,然后按如下方式收集

    ChromeDriver driver = new ChromeDriver();
    driver.navigate().to(url);
    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("cssSelectorVisibleElement")));
    System.out.println(driver.manage().getCookies());
    

    或将WebDriverWait 诱导为elementToBeClickable() 用于交互式 元素,然后按如下方式收集

    ChromeDriver driver = new ChromeDriver();
    driver.navigate().to(url);
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("cssSelectorClickableElement")));
    System.out.println(driver.manage().getCookies());
    

    【讨论】:

    • 感谢您的反馈,实际上这是行不通的,我在发布问题之前已经尝试过了。在调用 getCookies() 方法之前,我确实有 WebDriverWait 让某些元素可见。
    • 您如何存储 cookie?我什至没有看到您加载任何特定的个人资料,您要做什么?
    • 下面是我的完整代码:System.setProperty("webdriver.chrome.driver", this.getDriverPath()); ChromeDriver driver = new ChromeDriver(); WebDriverWait wait = new WebDriverWait(driver, 20); driver.navigate().to(url); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(load))); System.out.println(driver.manage().getCookies());
    • By.cssSelector(load) 是哪个元素?你正在旋转一个新的浏览器?您为什么期待您的自定义 Cookie?
    • 我观察到的是,我的网站会在第一次调用域时自动设置语言 cookie。例如,它将设置 cookie 键:语言和值:in。如果由于某种原因我的网站不允许在浏览器上存储 cookie,我将提供默认语言。默认情况下,chrome 可以正常工作(将是应用程序存储中的 cookie),但在 Firefox 中不行(没有 cookie,只有会话变量)。所以我尝试通过 geckodriver 和 chromedriver 使用 selenium,它们的行为相同,通过不获取我设置的 cookie,这是语言,但我可以获得所有会话变量。我需要启用 cookie
    猜你喜欢
    • 2022-01-05
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2022-10-18
    • 2017-11-27
    • 2015-02-14
    • 2021-01-31
    • 2020-02-11
    相关资源
    最近更新 更多