众所周知,Webdriver 总是从新的默认配置文件开始。这就是它要求验证但手动进行时不同的原因。为避免这种情况,您可以指定 webdriver 手动使用的 chrome 配置文件。
在 Java 中,我们可以使用 ChromeOptions 和 Chrome Profile 来完成。在 chrome 中导航到 chrome://version/ 它将显示配置文件路径和可执行文件路径。
根据我的工作,在普通 chrome 中导航到 chrome://version/ 时,会显示 \Local\Google\Chrome\User Data\Profile 3。在此配置文件中,我导航到 stackoverflow 并保存了凭据。所以在下面的代码中使用
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("binary", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
System.setProperty("webdriver.chrome.driver", "E:\\selenium_setups\\poi-3.12\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
options.addArguments("user-data-dir=C:\\Users\\murali\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 3");
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(capabilities);
//WebDriver driver = new ChromeDriver(options);
driver.get("http://stackoverflow.com/");
根据我的理解,我排除了显示为已登录的 stackoverflow.com 页面。但第一次,我没有登录。所以在驱动程序打开的 chrome 中与 chrome://version/ 进行交叉检查,显示配置文件路径作为
\Local\Google\Chrome\User Data\Profile 3\Default 。然后手动登录到它自己的配置文件,由 webdriver 打开并通过关闭它来执行获取。
最后页面显示为已登录。所以可能是java,希望对你有帮助。
谢谢你,
壁画