我创建了一个函数(Selenium-Java)来登录、保存cookie并关闭当前 session 。然后再次打开浏览器并加载这些cookie(模拟)。
cookie 已加载,我已登录该页面。但是,当我尝试使用该页面中的其中一个按钮时,它不起作用。有人知道我做错了什么吗?它能识别出我正在使用自动化工具吗?
为什么 cookie 没有参数 SameSite
>
private void Play()throws InterruptedException{
driver.get("https://webpage.ro/");
LoadCookies();
driver.findElement(By.xpath("//*[contains(text(), 'JOACĂ')]")).click();
sleep(5000);
SaveCookies();
}
private void LoadCookies() {
try {
File file = new File("src/test/java/Tests/cookies/" + contorStart + "_cookies.data");
FileReader fileReader = new FileReader(file);
BufferedReader Buffreader = new BufferedReader(fileReader);
String strline;
while ((strline = Buffreader.readLine()) != null) {
StringTokenizer token = new StringTokenizer(strline, ";");
while (token.hasMoreTokens()) {
String name = token.nextToken();
String value = token.nextToken();
String domain = token.nextToken();
String path = token.nextToken();
String val = token.nextToken();
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy"); //Sun Feb 09 01:57:10 EET 2020
Date expiry = df.parse(val);
Boolean isSecure = Boolean.parseBoolean(token.nextToken());
//Boolean isHtOnly = Boolean.parseBoolean(token.nextToken());
Cookie ck = new Cookie(name, value, domain, path, expiry, isSecure);
driver.manage().addCookie(ck); // This will add the stored cookie to your current session
}
}
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("Can't load cookies");
}
}
private void SaveCookies() {
File file = new File("src/test/java/Tests/cookies/" + contorStart + "_cookies.data");
try {
// Delete old file if exists
file.delete();
file.createNewFile();
FileWriter fileWrite = new FileWriter(file);
BufferedWriter Bwrite = new BufferedWriter(fileWrite);
// loop for getting the cookie information
// loop for getting the cookie information
int i = 0;
for (Cookie ck : driver.manage().getCookies()) {
i++;
if (i != 4) {
Bwrite.write((ck.getName() + ";" + ck.getValue() + ";" + ck.getDomain() + ";" + ck.getPath() + ";" + ck.getExpiry() + ";" + ck.isSecure()));//+";"+ck.isHttpOnly()));
Bwrite.newLine();
}
}
Bwrite.close();
fileWrite.close();
} catch (Exception ex) {
ex.printStackTrace();
System.out.println("Cookies not saved");
}
}
谢谢!
最佳答案
我认为这并不完全是一个错误,而是 Chrome 对 future 弃用的合理警告。真正的问题是最后一行的错误 - 403。这意味着服务器未授权您调用该页面的特定 API。我认为提供更多信息(例如您正在做什么、代码等)会很有帮助。
关于java - Selenium - 为什么加载的 cookie 不能完全工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60169420/