options = FirefoxOptions()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options, executable_path='/Users/toprak/Desktop/geckodriver')
driver.get("https://twitter.com/login?lang=en")
Когда я пытаюсь запустить свой код, я получаю эту ошибку:
Warning (from warnings module):
File "/Users/toprak/Desktop/topla.py", line 19
driver = webdriver.Firefox(firefox_options=options, executable_path='/Users/toprak/Desktop/geckodriver')
DeprecationWarning: use options instead of firefox_options
Traceback (most recent call last):
File "/Users/toprak/Desktop/topla.py", line 19, in <module>
driver = webdriver.Firefox(firefox_options=options, executable_path='/Users/toprak/Desktop/geckodriver')
File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 137, in __init__
if options.binary is not None:
AttributeError: 'Options' object has no attribute 'binary'
Когда я удаляю строки, посвященные параметрам, и убираю «firefox_options=options», код работает нормально. Что мне делать, чтобы исправить это?
да не повезло к сожалению
Вместо использования объекта firefox_options
вам нужно использовать объект options
. Кроме того, вам нужно использовать атрибут headless
. Таким образом, ваш эффективный блок кода будет:
options = FirefoxOptions()
options.headless = True
driver = webdriver.Firefox(executable_path='/Users/toprak/Desktop/geckodriver', options=options)
driver.get("https://twitter.com/login?lang=en")
Вы можете найти пару соответствующих подробных обсуждений в:
По-прежнему выдает ту же ошибку «attributeError: объект «Параметры» не имеет атрибута« двоичный »».
@Xia Проверьте обновленный ответ и дайте мне знать статус
В наши дни аргумент --headless
отлично работает в Firefox (geckodriver).
Если вы получаете сообщение об ошибке, упомянутое в заголовке, то вы, вероятно, случайно создаете или передаете объект параметров на основе Chrome, а не объект параметров на основе Firefox.
Чтобы избежать этой ошибки, лучше всего создать псевдоним импорта для них обоих, чтобы их было легче различить.
from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
chrome_options = ChromeOptions()
chrome_options.add_argument('--headless')
chrome_driver = webdriver.Chrome(executable_path = r"..\mypath\chromedriver.exe", options=chrome_options)
firefox_options = FirefoxOptions()
firefox_options.add_argument('--headless')
firefox_driver = webdriver.Firefox(executable_path = r"..\mypath\geckodriver.exe", options=firefox_options)
Эти 4 строки помогли мне:
from selenium.webdriver.firefox.options import Options as FirefoxOptions
...
options = FirefoxOptions()
options.add_argument("--headless")
driver = webdriver.Firefox(firefox_options=options)
Если все еще выдает ошибку, вы можете попробовать заменить четвертую строку на driver = webdriver.Firefox(options=options)
Отвечает ли это на ваш вопрос? Невозможно вызвать безголовый firefox