Selenium 2获取域名中的所有cookie

时间:2013-02-14 10:19:00

标签: groovy webdriver geb

全部。我在域上获取cookie时遇到问题。 我尝试获取cookie:

def "go to site"() {
    when:
        go "http://bla-bla-bla.bla"
    then:
        title == "Bla-bla-bla"
        // check cookies
        String cookies = driver.manage().getCookieNamed("name1").getValue()
        println cookies
}

但是name1在其他域上使用http://bla-bla-bla.bla的Cookie,而不是name1http://ululu.ulu域{{1}}上的Cookie,并尝试在所有域(网站)上获取所有Cookie ,但我没有得到。

请帮助我获取所有域名(网站)上的所有Cookie。谢谢。 我的英语太糟糕了。

3 个答案:

答案 0 :(得分:3)

Selenium只允许您访问当前活动域的Cookie。也就是说,与当前浏览器状态相关的cookie。

我知道没有办法解决这个问题。

答案 1 :(得分:2)

使用Mozilla firefox add-on可以解决此问题,它将在当前配置文件目录下以XML格式保存所有Cookie。此附加组件将保存所有域中的cookie,并可使用webdriver访问。

有关实施的更多详细信息,请参阅以下博客: http://automationoverflow.blogspot.in/2013/07/getting-cookies-from-all-domains.html

如果这个答案对你有帮助,请记得投票。

答案 2 :(得分:1)

您无需使用插件即可获取所有cookie(包括httpOnly和安全cookie )。 如果您使用ChromeDriver,则可以从浏览器配置文件文件夹中获取所有cookie。

它们存储在./profile/Default/Cookies中的sqlite数据库文件中

java / selenium示例:

//set Browsers profile folder with ChromeOptions:

String intendedProfileDestinationPath = "C:/temp/somefolder";
ChromeOptions options = new ChromeOptions();
options.addArguments("user-data-dir="+intendedProfileDestinationPath);
WebDriver driver = new ChromeDriver(options);

//...visit one or more pages...    

//use sqlite to access file:

try {
  // db parameters
  String url = "jdbc:sqlite:"+pathToSqliteCookiesFile;
  // create a connection to the database
  conn = DriverManager.getConnection(url);
} catch (SQLException e) {
  System.out.println(e.getMessage());
}
String sql = "SELECT * FROM cookies";
ResultSet result = conn.createStatement().executeQuery(sql);
//... iterate resultset ...

通过Maven获取sqlite驱动程序:

<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.28.0</version>
</dependency>

如果您只想从访问的页面中获取cookie,请在重新启动硒浏览器时确保删除完整的文件夹内容。