Python ile Selenium'da programlı olarak firefox başsız nasıl yapılır?


125

Bu kodu python, selenyum ve firefox ile çalıştırıyorum ama yine de firefox'un 'head' sürümünü alıyorum:

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)

Ayrıca bazı ikili değişkenleri denedim:

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

2
Bunun çalışması için Firefox sürümünüzün 56+ olması gerektiğini eklemek istedim. Yayınlanan çözümlerden herhangi birinin neden benimkinde işe yaramadığını anlamam biraz zaman aldı. developer.mozilla.org/en-US/Firefox/Headless_mode
Bora Lee

Yanıtlar:


225

Firefox Tarayıcısını başsız olarak çağırmak için, headlessözelliği Options()sınıf aracılığıyla aşağıdaki gibi ayarlayabilirsiniz :

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

Başsız modu gerçekleştirmenin başka bir yolu var. Eğer devre dışı gerekir veya kodu değiştirmeden, Firefox'ta başsız modunu etkinleştirirseniz, ortam değişkeni ayarlayabilirsiniz MOZ_HEADLESSiçin ne olursa Firefox başsız çalıştırmak istediğiniz veya tüm ayarlıyorum yoksa.

Bu, örneğin sürekli entegrasyon kullandığınızda ve sunucuda işlevsel testleri çalıştırmak, ancak yine de PC'nizde testleri normal modda çalıştırmak istediğinizde çok kullanışlıdır.

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

veya

$ 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

Outro

ChromeDriver, Selenium aracılığıyla Başsız modda Chrome tarayıcısını başlatacak şekilde nasıl yapılandırılır?


4
Yükseltilmiş Selenium (3.14.1) ve PhantomJS artık kullanımdan kaldırıldı, bu nedenle testlerimden hiçbiri işe yaramadı. Aceleyle başsız Firefox'a geçmek zorunda kaldım. Bu mükemmel özet için teşekkürler
MortenB

5
MOZ_HEADLESS = 1 python manage.py testi hile yaptı! Artık xvfb çalıştırmaya gerek yok (:
Nicky Kouffeld

23

İlk cevap artık işe yaramıyor.

Bu benim için çalıştı:

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' harika çalışıyor!
hirnwunde

1
from selenium import webdriverçağırmak için eklewebdriver.Firefox()
Kar

2
Kabul edilen cevap, Firefoxvegeckodriver
CONvid19


1

Bunu daha sonra bulmuş olabilecek (ve bunu başarmanın java yolunu isteyen) kişiler için sadece bir not; FirefoxOptionsayrıca başsız modu etkinleştirebilir:

FirefoxOptions firefoxOptions = new FirefoxOptions();
firefoxOptions.setHeadless(true);

9
Bu soru Java ile değil, Python ile ilgili.
Mapio

0
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')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.