gpt4 book ai didi

java - 禁用弹出窗口 "Restore Pages? Chrome didn' t 正确关闭。”在 selenium webdriver Java 中

转载 作者:行者123 更新时间:2023-12-04 15:31:36 55 4
gpt4 key购买 nike

虽然我看到了一些相关的问题,但我仍然面临这个问题,所以我再次提出这个问题。
我有一个网站,它在第一次登录时要求提供登录验证码,然后在进一步的登录实例中不再询问。如果我不使用自定义浏览器配置文件,则每次 selenium 运行登录时,站点都会询问验证码。因此我使用了如下定制的浏览器配置文件(这不是问题)

options.addArguments("user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\default");

然后,测试完成后,我退出浏览器使用
driver.quit();

enter image description here

问题是,下次我再次运行测试时,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和密码,以防止前面提到的登录验证码问题。

    最佳答案

    我解决了这个问题,在设置用户目录后在首选项中将 exit_type 设置为正常。

            Map<String, Object> prefs = new HashMap<String, Object>();
    prefs.put("profile.exit_type", "Normal");
    options.setExperimentalOption("prefs", prefs);
    在你的情况下会是这样的
            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");

    关于java - 禁用弹出窗口 "Restore Pages? Chrome didn' t 正确关闭。”在 selenium webdriver Java 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61140088/

    55 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com