python selenium driver.quit() 如果设置 firefox_profile 则无法退出 firefox 浏览器

python selenium driver.quit() can not quit firefox browser if firefox_profile setted

这个问题让我很困惑。 我正在使用 python selenium 做一些自动工作。完成工作后,我需要关闭浏览器(我必须使用 firefox)。我知道 driver.close() 是关闭当前 window 和 driver.quit() 将关闭所有 windows 并退出浏览器。问题是:如果我使用 python file.py 到 运行 我的代码,它对我不起作用,但如果我设置driver in python console,这里不行就是说它只是关闭了我的url,但是firefox浏览器没有退出。以上所有测试都设置了firefox_profile。 此外,我发现如果我不设置 firefox_profile 到 运行 的第一种方法,我的代码也能正常工作。我认为这可能是 firefox_profile 的错误。希望有人来拯救我的一天。 我的代码就像:

profile = webdriver.FirefoxProfile()
profile.set_preference('browser.download.folderList', 2)  # custom location
profile.set_preference('browser.download.manager.showWhenStarting', False)
profile.set_preference('browser.download.dir', download_dir)
profile.set_preference(
    'browser.helperApps.neverAsk.saveToDisk', 'application/octet-stream')
driver = webdriver.Firefox(
    executable_path=gecko_dir, firefox_profile=profile)
driver.get(someurl)
driver.quit()# which will close my session, my url, my current window but not exit browser

我正在使用的版本:

虽然我们使用最新的 GeckoDriver v.0.18.0Mozilla Firefox 53.0 使用 Selenium 3.5.0,但由 WebDriver 实例启动的浏览器 window(s) 绑定到在 WebDriver 实例上调用 quit() 后,被摧毁(杀死)

所以您看到的空白 window 可能是其他一些用户交互或悬空实例的结果。

推荐:

您可以考虑以下步骤来开始干净的测试执行:

  1. 运行 CCleaner 用于清除您之前执行的所有残留物的工具。
  2. 重新启动您的系统以在干净的 OS 环境中启动您的 Test Execution
  3. 保持 Test Environment 与其他 User Interactions 隔离。