【问题标题】:How to make Firefox headless programmatically in Selenium with Python?如何使用 Python 在 Selenium 中以编程方式使 Firefox 无头?
【发布时间】:2018-03-26 23:25:12
【问题描述】:

我正在使用 python、selenium 和 firefox 运行此代码,但仍然获得了 firefox 的“头部”版本:

binary = FirefoxBinary('C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', log_file=sys.stdout)
binary.add_command_line_options('-headless')
self.driver = webdriver.Firefox(firefox_binary=binary)

我也尝试了一些二进制的变体:

binary = FirefoxBinary('C:\\Program Files\\Nightly\\firefox.exe', log_file=sys.stdout)
        binary.add_command_line_options("--headless")

【问题讨论】:

标签: python python-3.x selenium selenium-webdriver firefox-headless


【解决方案1】:

要无头调用 Firefox 浏览器,您可以通过 Options() 类设置 headless 属性,如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options, executable_path=r'C:\Utility\BrowserDrivers\geckodriver.exe')
driver.get("http://google.com/")
print ("Headless Firefox Initialized")
driver.quit()

还有另一种方法可以实现无头模式。如果您需要在 Firefox 中禁用或启用无头模式,无需更改代码,您可以将环境变量 MOZ_HEADLESS 设置为 whatever,如果您希望 Firefox 运行无头,或者不设置它完全没有。

当您使用例如持续集成并且您希望在服务器中运行功能测试但仍然能够在您的 PC 中以正常模式运行测试时,这非常有用。

$ MOZ_HEADLESS=1 python manage.py test # testing example in Django with headless Firefox

$ export MOZ_HEADLESS=1   # this way you only have to set it once
$ python manage.py test functional/tests/directory
$ unset MOZ_HEADLESS      # if you want to disable headless mode

YouTube 视频的步骤


结尾

How to configure ChromeDriver to initiate Chrome browser in Headless mode through Selenium?

【讨论】:

  • 升级的 Selenium (3.14.1) 和 PhantomJS 现在已被弃用,所以我的测试都没有奏效。不得不匆忙切换到 Firefox --headless。感谢您的精彩总结
  • MOZ_HEADLESS=1 python manage.py test 成功了!不再需要 xvfb-run (:
【解决方案2】:

第一个答案不再起作用。

这对我有用:

from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium import webdriver

options = FirefoxOptions()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)
driver.get("http://google.com")

【讨论】:

  • Python 3.8.2 / selenium.__version__ == '3.141.0' 效果很好!
  • 添加from selenium import webdriver以调用webdriver.Firefox()
  • 接受的答案仍然适用于最新版本的Firefoxgeckodriver
【解决方案3】:

我的回答:

set_headless(headless=True) is deprecated. 

https://seleniumhq.github.io/selenium/docs/api/py/webdriver_firefox/selenium.webdriver.firefox.options.html

options.headless = True

为我工作

【讨论】:

    【解决方案4】:
    Used below code to set driver type based on need of Headless / Head for both Firefox and chrome:
    
    // Can pass browser type 
    
    if brower.lower() == 'chrome':
        driver = webdriver.Chrome('..\drivers\chromedriver')
    elif brower.lower() == 'headless chrome':
        ch_Options = Options()
        ch_Options.add_argument('--headless')
        ch_Options.add_argument("--disable-gpu")
        driver = webdriver.Chrome('..\drivers\chromedriver',options=ch_Options)
    elif brower.lower() == 'firefox':
        driver = webdriver.Firefox(executable_path=r'..\drivers\geckodriver.exe')
    elif brower.lower() == 'headless firefox':
        ff_option = FFOption()
        ff_option.add_argument('--headless')
        ff_option.add_argument("--disable-gpu")
        driver = webdriver.Firefox(executable_path=r'..\drivers\geckodriver.exe', options=ff_option)
    elif brower.lower() == 'ie':
        driver = webdriver.Ie('..\drivers\IEDriverServer')
    else:
        raise Exception('Invalid Browser Type')
    

    【讨论】:

      【解决方案5】:

      对于 OP 或任何目前感兴趣的人,以下是我目前使用 Firefox 的代码部分:

      opt = webdriver.FirefoxOptions()
      opt.add_argument('-headless')
      ffox_driver = webdriver.Firefox(executable_path='\path\to\geckodriver', options=opt)
      

      【讨论】:

        【解决方案6】:
        from selenium.webdriver.firefox.options import Options
        
        if __name__ == "__main__":
            options = Options()
            options.add_argument('-headless')
            driver = Firefox(executable_path='geckodriver', firefox_options=options) 
            wait = WebDriverWait(driver, timeout=10)
            driver.get('http://www.google.com')
        

        经过测试,按预期工作,来自Official - Headless Mode | Mozilla

        【讨论】:

          猜你喜欢
          • 2018-06-23
          • 2019-05-13
          • 2019-01-15
          • 1970-01-01
          • 2019-09-21
          • 1970-01-01
          • 2018-06-27
          相关资源
          最近更新 更多