2016-10-20 2 views
3

Я хочу запустить веб-редактор firefox с селеном, чтобы я мог сэкономить логин с запросами в веб-гусеничном ходу. Я получил идею от этого решения stackoverflow link, так как логин с запросами не работает по нескольким причинам. Я всегда получаю сообщение об ошибке, что браузер не может быть запущен, потому что разрешение было отклонено. Вот мой код:Python Selenium Webdriver Не удалось запустить браузер браузера: разрешение отклонено

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

binary=FirefoxBinary("/path/to/firefox") 
fp=webdriver.FirefoxProfile("path/to/extra/profile") 


url="www.python.org" 
driver = webdriver.Firefox(fp, firefox_binary=binary, executable_path="path/to/geckodriver.exe") 
driver.get(url) 

Ошибка заключается в следующем:

selenium.common.exceptions.WebDriverException: Message: Failed to start browser: 
permission denied 

Может кто-нибудь, пожалуйста, помогите? Я искал годы в Интернете, но ничего не могу найти ... Спасибо !!!

+0

Не могли бы вы попробовать просто 'driver = webdriver.Firefox()' без использования 'Profile'? Та же проблема? – Andersson

+0

@ Andersson Same Problem! – Tessa

+0

простым решением может быть загрузка chromedriver: http://chromedriver.storage.googleapis.com/index.html?path=2.24/ разархивировать его и вставить в папку сценариев python и использовать driver = webdriver.Chrome() .. Я говоря это, потому что ваша цель - отказаться от страницы и не тестировать пользовательский интерфейс веб-приложения. – thebadguy

ответ

9

Я пытаюсь получить Selenium 3, работающий в Firefox, и запутывался в одну сообщение об ошибке за другим. После загрузки geckodriver и добавления его к системному пути эта последняя ошибка была тем же разрешением, что и проблема, которую вы видите. После довольно многого поиска и сборки вещей, что в конечном итоге работало, добавлялось также firefox.exe на путь.

Вот полный скрипт:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 

binary = FirefoxBinary(r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe') 
driver = webdriver.Firefox(firefox_binary=binary) 

driver.get('http://www.google.com') 

Надеется, что это будет работать для вас тоже.

+2

Спасибо, это помогло. Я все еще получил ошибку «Не удалось запустить браузер, не найден. Webdriver firefox'. Чтобы исправить это, мне пришлось обновлять firefox. Затем я получил сообщение об ошибке 'WebDriverException: Сообщение: Отсутствует поле marionetteProtocol 'в рукопожатии'. Чтобы исправить это, я изменил «f» на «F» в «firefox.exe» в строке 'binary = FirefoxBinary (r'C: \ Program Files (x86) \ Mozilla Firefox \ firefox.exe ')' – Viragos

1

Просто используйте двойной обратный слэш в пути на Windows:

binary = FirefoxBinary(r'C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe') 
2

В Mac OS X, вам необходимо указать фактический Firefox бункером, а не просто Firefox.app. По крайней мере, это сработало для меня.

from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 
binary = FirefoxBinary('/Users/YOUR_USERNAME/Applications/Firefox.app/Contents/MacOS/firefox-bin') 
driver = webdriver.Firefox(firefox_binary=binary) 
Смежные вопросы