SeleniumwebDriver-等待java中的cookie和本地数据库cookie



我使用selenium在java中获取cookie和本地数据库cookie。

如果我使用以下代码等待,边将准备好,我没有得到所有的cookie:

webDriverWait.until(webDriver -> "complete".equals((JavascriptExecutor) webDriver.executeScript("return document.readyState")))

我看到,如果我等待足够的时间,最终我会得到所有的cookie(保存在本地数据库中的常规cookie和userData cookie(。

有没有一种方法可以使用webDriverWait等待,直到加载所有cookie?

您永远不知道您的客户端是否加载了所有可能的cookie。因为如果您有异步UI,每个新请求都可能添加新的cookie或修改现有的cookie。

所以更好、更可靠;适当的";方法是首先知道您希望拥有哪些cookie。假设你把名字保存在Set<String> cookieNames中。

然后你的等待看起来像:

webDriverWait.until(
webDriver -> {
Set<Cookie> cookies = webDriver.manage().getCookies();
return cookies.size() == cookieNames.size() &&
cookies.stream().allMatch(cookie -> cookieNames.contains(cookie.getName()));
}
);

或者如果您的前端正在使用Angular,您可以等待此脚本为true(意味着网站已完全加载(,然后可以继续使用您的脚本获取cookie:

return window.getAllAngularTestabilities().findIndex(x => !x.isStable()) === -1

最新更新