Selenium 2.53 не работает в Firefox 47


107

Я получаю сообщение об ошибке при использовании Firefox с WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Версия Firefox: 47.0
  • Селен: 2,53,0
  • Windows 10 64 бит

У кого-нибудь возникает аналогичная проблема или есть идеи, как решить эту проблему? Он отлично работает с Chrome, но с Firefox ни один из URL-адресов не загружается.


1
Да, я тоже получаю ту же ошибку. Удаляю и снова устанавливаю заново. Если ваш браузер открыт, сбросьте его и попробуйте.
Кишан Патель

Привет, Кишан, я пытался, как ты упомянул, но все равно та же ошибка ... поэтому я понизил рейтинг до 46.0.1
k

Да. в Mozilla возникла некоторая проблема с ограничением отображения. они обновили версию. Можно снова откатиться на 47. :-)
Кишан Патель

1
Возможный дубликат сообщения Can't open browser with Selenium после обновления Firefox
Mobrockers

1
Эта проблема проявляется в OSX с ошибкой «Firefox.bin не открывается, потому что личность разработчика не может быть подтверждена:». Понижение рейтинга до 46 решило эту проблему.
hoosteeno

Ответы:


93

К сожалению, Selenium WebDriver 2.53.0 несовместим с Firefox 47.0. Компонент WebDriver, который обрабатывает браузеры Firefox ( FirefoxDriver), будет прекращен. Начиная с версии 3.0, Selenium WebDriver потребуется geckodriverдвоичный файл для управления браузерами Firefox. Больше информации здесь и здесь .

Следовательно, чтобы использовать Firefox 47.0 в качестве браузера с Selenium WebDriver 2.53.0, вам необходимо загрузить драйвер Firefox (который представляет собой двоичный файл, называемый geckodriverначиная с версии 0.8.0 и ранее wires) и экспортировать его абсолютный путь к переменной webdriver.gecko.driverкак системное свойство в вашем Java-коде:

System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");

К счастью, библиотека WebDriverManager может сделать эту работу за вас, т.е. загрузить соответствующий двоичный файл Marionette для вашего компьютера (Linux, Mac или Windows) и экспортировать значение соответствующего системного свойства. Чтобы использовать эту библиотеку, вам необходимо включить эту зависимость в свой проект:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.2.0</version>
</dependency>

... а затем выполните эту строку в своей программе перед использованием WebDriver:

WebDriverManager.firefoxdriver().setup();

Полный пример выполнения тестового примера JUnit 4 с использованием WebDriver может быть следующим:

public class FirefoxTest {

    protected WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        WebDriverManager.firefoxdriver().setup();
    }

    @Before
    public void setupTest() {
        driver = new FirefoxDriver();
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        // Your test code here
    }
}

Учтите, что Marionette будет единственным вариантом в будущем (для WebDriver 3+ и Firefox 48+), но в настоящее время (версия 0.9.0 на момент написания) не очень стабильна. Взгляните на дорожную карту Marionette для получения дополнительной информации.

ОБНОВИТЬ

Selenium WebDriver 2.53.1 был выпущен 30 июня 2016 года. FirefoxDriverОн снова работает с Firefox 47.0.1 в качестве браузера.


9
Это неверно. MarionetteDriver фактически НЕ поддерживается в 47, несмотря на то, что FirefoxDriver не работает. По всей видимости, 47.0.1 будет выпущен (когда-нибудь), в котором FirefoxDriver снова будет работать. Рабочий MarionetteDriver не попал в 47, как ожидалось. См. Github.com/mozilla/geckodriver/issues/89 и bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Примечание: я не говорю, что MarionettDriver вообще не будет работать, просто он сломан на ТОННУ вариантов использования с 47. Понижение версии - единственный вариант на сегодняшний день.
dmansfield

7
Я обновился до 47.0.1, а Selenium все еще не подключается к Firefox. Firefox больше не вызывает сбой, но я все равно получаю отказ при подключении к 127.0.0.1:7055. Когда я запускаю TcpView, после запуска Firefox нет прослушивателя порта 7055.
BardMorgan

2
Я наблюдаю то же поведение, что и BardMorgan, при использовании Mac, Mono и Selenium .NET 2.53.0. Firefox 47.0.1 запускается, но я получаю сообщение об ошибке тайм-аута. OpenQA.Selenium.WebDriverException: не удалось запустить сокет в течение 45000 миллисекунд. Попытка подключиться к следующим адресам: 127.0.0.1:7055 - netstat не показывает слушателя для этого порта.
Otto G

1
И я теперь также тестировал под Windows 10 и родным .NET, и проблема та же. Netstat показывает, что Selenium пытается подключиться, но никакая служба не прослушивает:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Отто Дж,

1
Для справки, при посещении about: addons в Firefox 47.0.1, запущенном Selenium 2.53.0, на вкладке Extensions будет отображаться «Firefox WebDriver несовместим с Firefox 47.0.1». Это связано с тем, что максимальная версия - 47.0 в github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - основная версия исправлена, поэтому сборка последнего кода Selenium с GitHub должна решить проблему.
Otto G

18

Попробуйте использовать firefox 46.0.1. Лучше всего подходит для Selenium 2.53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/

Спасибо, Рахман ... сейчас он работает ... но что, если требуется работа с последней версией.
veena k

Если решение работает, не могли бы вы принять ответ? :-)
Махбуб Рахман

8
это не решение, это возврат к предыдущей версии.
TiGreX 09

1
Я тоже это сделал (но перешел на v45) - если вы пойдете по этому пути, убедитесь, что вы переименовали <path> \ Mozilla Firefox \ updater.exe в updater.exe.disable, чтобы предотвратить обновление вашей пониженной версии до текущей версии автоматически. Могут быть и другие способы добиться этого, но отключение обновлений в настройках параметров у меня не сработало.
Дрю

10

У меня была такая же проблема, и я узнал, что вам нужно сменить драйверы, потому что поддержка была прекращена . Вместо использования драйвера Firefox вам нужно использовать драйвер марионетки для запуска ваших тестов. В настоящее время я сам работаю над настройкой и могу опубликовать несколько предлагаемых шагов, если вы хотите, когда у меня будет рабочий пример.

Вот шаги, которые я выполнил, чтобы заставить это работать в моей среде Java на Mac (у меня также работало в моих установках Linux (Fedora, CentOS и Ubuntu)):

  1. Загрузите ночной исполняемый файл со страницы выпусков
  2. Распаковать архив
  3. Создайте каталог для Marionette (т. Е. mkdir -p /opt/marionette)
  4. Переместите распакованный исполняемый файл в созданный вами каталог.
  5. Обновите свой, $PATHчтобы включить исполняемый файл (также, отредактируйте, .bash_profileесли хотите)
  6. : bangbang: Убедитесь, что у вас chmod +x /opt/marionette/wires-x.x.xэто исполняемый файл
  7. При запуске убедитесь, что вы используете следующий код ниже (это то, что я использовал на Mac)

Быстрая заметка

Все еще не работает должным образом, но, по крайней мере, запускает браузер. Нужно выяснить, почему - прямо сейчас мне кажется, что мне нужно переписать свои тесты, чтобы заставить его работать.

Фрагмент Java

WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");

6

Если вы используете OSX и Homebrew, вы можете установить старые версии Firefox через brew cask:

brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want

После установки вам просто нужно переименовать исполняемый файл FF в каталоге приложений в «Firefox».

Дополнительную информацию можно найти на git repo homebrew-firefox . Реквизит smclernon для создания оригинальной бочки .



3

На случай, если кому-то интересно, как использовать Marionette на C #.

FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
    service,
    option,
    TimeSpan.FromSeconds(30));

Переопределение FirefoxOptions для предоставления функции для добавления дополнительных возможностей и настройки профиля Firefox, потому что selenium v53 еще не предоставляет эту функцию.

public class FirefoxProfileOptions : FirefoxOptions
{
    private DesiredCapabilities _capabilities;

    public FirefoxProfileOptions()
        : base()
    {
        _capabilities = DesiredCapabilities.Firefox();
        _capabilities.SetCapability("marionette", this.IsMarionette);
    }

    public FirefoxProfileOptions(FirefoxProfile profile)
        : this()
    {
        _capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
    }

    public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
    {
        _capabilities.SetCapability(capabilityName, capabilityValue);
    }

    public override ICapabilities ToCapabilities()
    {
        return _capabilities;
    }
}

Примечание: запуск с профилем не работает с FF 47, он работает с FF 50 Nightly.

Однако мы попытались преобразовать наш тест для использования Marionette, и на данный момент это просто нецелесообразно, потому что реализация драйвера либо не завершена, либо содержит ошибки. Я бы посоветовал людям понизить версию своего Firefox прямо сейчас.


2

Новые библиотеки Selenium теперь отсутствуют, согласно: https://github.com/SeleniumHQ/selenium/issues/2110

Страница загрузки http://www.seleniumhq.org/download/, похоже, еще не обновлена, но, добавив 1 к второстепенной версии в ссылке, я смог загрузить версию C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

У меня работает с Firefox 47.0.1.

Кстати, я смог построить только расширение Firefox webdriver.xpi из основной ветки в GitHub, запустив ./go //javascript/firefox-driver:webdriver:run- который выдал сообщение об ошибке, но создал файл build / javascript / firefox-driver / webdriver.xpi , который я можно было переименовать (чтобы избежать конфликта имен) и успешно загрузить с помощью метода FirefoxProfile.AddExtension. Это был разумный обходной путь без необходимости перестраивать всю библиотеку Selenium.


Я могу подтвердить, что обновление selenium до 2.53.1 решило проблему для меня.
Disper 06

Теперь это лучший ответ.
Holistic Developer

2

Это проблема FF47 https://github.com/SeleniumHQ/selenium/issues/2110

Пожалуйста, перейдите на FF 46 или ниже (или попробуйте разработчик FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Инструкции по переходу на более раннюю версию: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Или, если вы на Mac, как предложил кто-то еще в этой теме, используйте brew.


Согласно комментарию 19 часов назад: « Firefox 47.0.1 выпущен с исправлением. Теперь нам нужно выпустить клиентские библиотеки, чтобы уловить скачок версии в xpi, который используется FirefoxDriver ». Это, кажется, объясняет, почему все еще существуют проблемы с 2.53.0 и 47.0.1.
Otto G,

2

Firefox 47.0 перестал работать с Webdriver.

Самое простое решение - перейти на Firefox 47.0.1 и Webdriver 2.53.1. Эта комбинация снова работает. Фактически, восстановление совместимости с Webdriver было основной причиной выпуска 47.0.1, согласно https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ .


Теперь Firefox 47.0.1 также отлично работает с Webdriver 2.53.0. Я тестировал эту комбинацию.
veena k

2

Вы можете попробовать использовать этот код,

private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");        
driver = new FirefoxDriver();

Я обновился до selenium 3.0.0, а версия Firefox - 49.0.1

Вы можете скачать geckodriver.exe со страницы https://github.com/mozilla/geckodriver/releases.

Убедитесь, что вы загружаете только zip-файл, файл geckodriver-v0.11.1-win64.zip или файл win32 в соответствии с вашей системой и извлекаете его в папку.

Поместите путь к этой папке в кавычки «Ваш путь к драйверу». Не забудьте указать в пути geckodriver.exe.


1

В конце концов я установил дополнительную старую версию Firefox (использованную только для тестирования), чтобы решить эту проблему, помимо моей обычной (безопасной, актуальной) последней установки Firefox.

Для этого требуется, чтобы webdriver знал, где он может найти двоичный файл Firefox, который можно настроить с помощью webdriver.firefox.binсвойства.

Что сработало для меня (mac, maven, /tmp/ff46как установочная папка):

mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify

Чтобы установить старую версию Firefox в специальную папку, создайте папку, откройте Finder в этой папке, загрузите Firefox dmg и перетащите его в этот Finder.



1

По состоянию на сентябрь 2016 г.

Firefox 48.0и selenium==2.53.6работать нормально без ошибок

Чтобы обновить Firefox Ubuntu 14.04 только на

sudo apt-get update
sudo apt-get upgrade firefox

1

Мне кажется, что лучшим решением будет обновление до Selenium 3.0.0, загрузка geckodriver.exe и использование Firefox 47 или выше.

Я изменил инициализацию Firefox на:

 string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe");
 string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
 File.Copy(geckoPathTest, geckoPath);
 Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
 _firefoxDriver = new FirefoxDriver();

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.