все.

Главный вопрос: Я использую Python API для Selenium 2 и хочу запускать браузер Firefox на пустой странице (т.е. не отправлять никаких запросов при запуске браузера). Я создал объект FirefoxProfile и изменил 'browser.startup.page' на 0. В первый раз, когда я создаю веб-драйвер, используя этот профиль, он переходит на mozilla.org, но последующие веб-драйверы запускаются на пустой странице, как я и предполагал. Почему это происходит и как это исправить?

Второй вопрос: приведенный ниже код работает нормально, когда я ввожу его построчно в интерпретаторе, но при попытке запустить его как сценарий происходит сбой. Я получаю WebDriverException: "Не удается загрузить профиль. Profile Dir: %s Если вы указали log_file в конструкторе FirefoxBinary, проверьте его на детали." Я также получаю всплывающее окно с сообщением "Ваш профиль Firefox не может быть загружен. Возможно, он отсутствует или недоступен". Как исправить это, чтобы он запускался как сценарий?

from selenium import webdriver

profile = webdriver.FirefoxProfile()
# Tell the browser to start on a blank page
profile.set_preference('browser.startup.page', 0)

# Start first session (doesn't work)
driver1 = webdriver.Firefox(profile)
driver1.close()
# Start second session (this works)
driver2 = webdriver.Firefox(profile)

Ответы (1)

Настройка "browser.startup.page" = 0 является настройкой по умолчанию для экземпляров webdriver. Настройка, которая работает для меня (старый дефект FF)

profile.set_preference("browser.startup.homepage_override.mstone", "ignore")

Обходной путь без использования профиля заключается в том, чтобы просто загрузить пустую страницу после запуска экземпляра Firefox:

driver = webdriver.Firefox()    
driver.get("about:blank")

О, я забыл вторую часть: Сообщение об ошибке при выполнении вашего кода в сценарии связано с тем, что старый экземпляр Firefox все еще работает, когда вы запускаете новый с тем же профилем. Требуется некоторое время, чтобы закрыть старое окно браузера. Если вы добавите sleep на 5 секунд перед последней строкой в вашем примере, он будет работать и из сценария.


Выяснить, почему он работает без этого, было непросто на двух моих машинах. Причина: Iceweasel и Firefox из Linux Mint не показывают страницу обновления.

BTW: Приятно обнаружить, что запуск следующего экземпляра Firefox работает.

2022 WebDevInsider