虽然我已经看到了一些相关的问题,但我再次提出这个问题,因为我仍然面临这个问题。我有一个网站在第一次登录时要求输入登录验证码,然后在进一步的登录实例中不再询问。如果我不使用自定义浏览器配置文件,则每次 selenium 运行登录时网站都会询问验证码。因此我使用了如下的自定义浏览器配置文件(这不是问题)
options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
然后,测试完成后,我退出浏览器使用
driver.quit();
问题是,下次我再次运行测试时,chrome 浏览器会打开并弹出“恢复页面?Chrome 没有正确关闭”。并且网站在登录后再次要求验证码。输入验证码不是我的脚本的一部分,所以脚本失败了。然后我通过单击右上角的 X 手动关闭浏览器。然后我再次运行测试,chrome浏览器打开正常,没有弹窗,网站不要求验证码,登录成功。然后,脚本通过 driver.quit() 关闭浏览器本身。然后我再次运行测试,chrome浏览器打开并弹出窗口,测试再次失败。这表明 driver.quit() 没有正确关闭浏览器。我已经尝试了几种设置,但仍然弹出窗口。
- 首选项文件->
"exit_type":"none"
(以及“正常”)和exit cleanly = true
- 站点设置 -> 弹出窗口和重定向 -> 已阻止(推荐)
- 我也试过检查警报是否存在,但它说“没有警报”。脚本不会将弹出窗口检测为警报。
在上一次测试运行中 driver.quit() 关闭浏览器后,如何确保每次正常打开浏览器?请帮忙。
下面是我的代码:我使用 chrome 扩展,所以我也不能禁用扩展。
String extFilePath = "C:\\ChromeDriver\\Salesforce_inspector.crx";
System.setProperty("webdriver.chrome.driver","C:\\chromedriver\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File(extFilePath));
options.addArguments("--disable-notifications");
options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);
try
{
driver.switchTo().alert();
System.out.println("alert accepted");
} // try
catch (NoAlertPresentException Ex)
{
System.out.println("No alert");
}
driver.get("salesforce url");
我不想使用隐身模式,因为我需要保留cookie和密码以防止前面提到的登录验证码问题。