San*_*jay 5 java popup selenium-webdriver chrome-profile
虽然我看到了一些相关的问题,但我再次提出这个问题,因为我仍然面临这个问题。我有一个网站,在首次登录时要求输入登录验证码,然后在以后的登录实例中不再询问。如果我不使用自定义浏览器配置文件,则每次 selenium 运行登录时,该网站都会询问验证码。因此我使用了如下自定义的浏览器配置文件(这不是问题)
options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
Run Code Online (Sandbox Code Playgroud)
然后,测试完成后,我使用退出浏览器
driver.quit();
Run Code Online (Sandbox Code Playgroud)
问题是,下次我再次运行测试时,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");
Run Code Online (Sandbox Code Playgroud)
我不想使用隐身模式,因为我需要保留cookie和密码,以防止前面提到的登录验证码问题。
小智 4
我解决了这个问题,在设置用户目录后,在首选项中将 exit_type 设置为正常。
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.exit_type", "Normal");
options.setExperimentalOption("prefs", prefs);
Run Code Online (Sandbox Code Playgroud)
在你的情况下会是这样的
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("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");
options.addArguments("--start-maximized");
Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("profile.exit_type", "Normal");
options.setExperimentalOption("prefs", prefs);
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");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6558 次 |
| 最近记录: |