如果firefox_profile设置

时间:2017-08-16 06:03:44

标签: python selenium firefox firefox-profile

这个问题让我很困惑。 我正在使用python selenium做一些自动工作。完成工作后,我需要关闭浏览器(我必须使用firefox)。我知道driver.close()将关闭当前窗口,driver.quit()将关闭所有窗口并退出浏览器。问题是:如果我使用 python file.py 来运行我的代码,它对我不起作用,但是如果我在 python console 中设置驱动程序,那么这里有效不工作就是说它只是关闭我的网址,但firefox浏览器没有退出。以上所有测试都设置了firefox_profile。 更多,我发现如果我没有设置firefox_profile运行我的代码的第一种方式也工作。我想也许这是firefox_profile的一个bug。希望有人能救我的一天。 我的代码就像:

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

我使用的版本:

  • python 3.5.3
  • selenium 3.4.3
  • firefox 55.0.1
  • geckodriver 0.18.0

1 个答案:

答案 0 :(得分:0)

虽然我们使用最新Selenium 3.5.0GeckoDriver v.0.18.0的{​​{1}},但Mozilla Firefox 53.0实例发起的浏览器窗口必然会被销毁(一旦调用WebDriver实例上的quit(),就会杀死

因此,您看到的空白窗口可能是某些其他用户交互或悬空实例的结果。

建议:

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

  1. 运行WebDriver工具,清除之前执行中的所有残羹剩饭。
  2. 重新启动系统,以便在干净的操作系统环境中启动CCleaner
  3. Test Execution与其他Test Environment隔离开来。