programing

파이어폭스를 파이썬으로 셀레늄에서 프로그래밍 방식으로 헤드리스로 만드는 방법은 무엇입니까?

skycolor 2023. 5. 2. 22:31
반응형

파이어폭스를 파이썬으로 셀레늄에서 프로그래밍 방식으로 헤드리스로 만드는 방법은 무엇입니까?

파이썬, 셀레늄, 파이어폭스로 이 코드를 실행하고 있지만 여전히 파이어폭스의 '헤드' 버전을 받습니다.

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")

Firefox Browser를 헤드 없이 호출하려면 다음을 설정할 수 있습니다.headless을 통한 재산.Options()클래스는 다음과 같습니다.

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_HEADLESSFirefox를 헤드 없이 실행하거나 아예 설정하지 않는 경우.

이 기능은 를 사용하는 경우 서버에서 기능 테스트를 실행하지만 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 동영상을 통한 단계


아우트로

셀레늄을 통해 헤드리스 모드에서 크롬 브라우저를 시작하도록 크롬 드라이버를 구성하는 방법은 무엇입니까?

첫 번째 대답은 더 이상 통하지 않습니다.

이것은 저에게 효과가 있었습니다.

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")

내 대답:

set_headless(headless=True) is deprecated. 

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

options.headless = True

나에게 효과가 있습니다.

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')

OP나 현재 관심 있는 사람들에게, 현재 파이어폭스에서 제게 도움이 된 코드 섹션은 다음과 같습니다.

opt = webdriver.FirefoxOptions()
opt.add_argument('-headless')
ffox_driver = webdriver.Firefox(executable_path='\path\to\geckodriver', options=opt)
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')

테스트 완료, 예상대로 작동하며 공식 - 헤드리스 모드 | 모질라

요즘은 이 코드로:

options                 = Options()
options.headless        = True
driver                  = webdriver.Firefox(executable_path=GeckoDriverManager().install(),options=options)

경고합니다.

사용 안 함 경고: executable_path가 사용되지 않습니다. 서비스 개체를 전달하십시오.

이것으로 변경하면 완벽하게 작동합니다.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# selenium drivers: https://www.selenium.dev/documentation/webdriver/getting_started/install_drivers/
# pip3 install selenium
# pip3 install webdriver-manager
# for custom firefox installation: link firefox to /usr/bin/firefox, example: ln -s /opt/firefox/firefox-bin /usr/bin/firefox

from selenium                           import webdriver
from webdriver_manager.firefox          import GeckoDriverManager
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service

options                 = Options()
options.headless        = True
service                 = Service(executable_path=GeckoDriverManager().install())
driver                  = webdriver.Firefox(service=service, options=options)

driver.get("http://google.com/")
print("Headless Firefox Initialized")
driver.quit()

언급URL : https://stackoverflow.com/questions/46753393/how-to-make-firefox-headless-programmatically-in-selenium-with-python

반응형