这很可能是因为每次您启动一个新的 ChromeDriver 实例时,您都会获得一个全新的 Chrome 配置文件,就像您打开一个新的隐私浏览会话一样。因此,您要测试的页面通过 cookie 定义的所有客户端特定设置都将丢失,必须重新设置。 (这是一件好事的主要原因是,对于自动化测试,您希望页面在每次新测试访问时都处于相同的状态。)
但是,有一些方法可以模拟 cookie 以使用 WebDriver 进行测试。
示例
以页面http://www.cnn.com 为例。每次您对该页面运行新测试时,页面底部都会弹出一个栏,要求您接受他们的 cookie 政策:
该页面会在 cookie 本身中存储您曾经单击“我同意”按钮的事实。您可以使用 Chrome 内容设置来确定某个网页设置了哪些 cookie。详细信息可以在这里找到:https://superuser.com/questions/244062/how-do-i-view-add-or-edit-cookies-in-google-chrome
对于这个特定页面,负责 cookie 的名称是“CNNtosAgreed”,并且在您单击“我同意”按钮后设置的值是“true”。
在您的 WebDriver 脚本中,您可以使用 manage cookies 功能来设置特定的 cookie,以便您正在测试的页面认为您以前访问过它。
在 Java 客户端绑定中,如下所示:
Java
driver.get("http://edition.cnn.com/");
driver.manage().addCookie(new Cookie("CNNtosAgreed", "true", ".cnn.com", "/", null));
driver.get("http://edition.cnn.com/");
请注意 Chrome 第一次导航到该页面时会弹出确认对话框,但不是第二次。
以下是 Python 中 cookie API 的一些示例:How to save and load cookies using python selenium webdriver