全部。我在域上获取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,而不是name1
,http://ululu.ulu
域{{1}}上的Cookie,并尝试在所有域(网站)上获取所有Cookie ,但我没有得到。
请帮助我获取所有域名(网站)上的所有Cookie。谢谢。 我的英语太糟糕了。
答案 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,请在重新启动硒浏览器时确保删除完整的文件夹内容。