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

Так. виникла проблема шоу-пробки від мозілла. вони оновили версію. Ви знову можете відкататись до 47.--)
Kishan Patel


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.1.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 під час написання) не дуже стабільна. Ознайомтеся з дорожньою карткою Маріонетти для отримання детальної інформації.

ОНОВЛЕННЯ

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/isissue/89 та bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Примітка. Я не кажу, що MarionettDriver взагалі не працюватиме, тільки що він зламаний для TON випадків використання з 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 не показує слухача цього порту.
Отто Г

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
Otto G

1
Для запису, відвідуючи про: аддони у Firefox 47.0.1, запущені Selenium 2.53.0, на вкладці Розширення буде показано «Firefox WebDriver несумісний із Firefox 47.0.1». Це пов’язано з тим, що максимальна версія 47.0 в github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - головна версія виправлена, тому складання останнього коду Selenium від GitHub має вирішити проблему.
Отто Г

18

Спробуйте використовувати firefox 46.0.1. Він найкраще співпадає з Селеном 2,53

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

Дякую, Рахман .. він працює зараз ... але що робити, якщо вимога працює з останньою версією.
veena k

Якщо рішення працює, чи можете ви прийняти відповідь? :-)
Махбуб Рахман

8
це не рішення, перехід на попередню версію.
TiGreX

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

10

У мене був такий самий випуск і з’ясувалося, що вам потрібно переключити драйвери, оскільки підтримка була відхилена . Замість використання драйвера Firefox вам потрібно використовувати драйвер Marionette для того, щоб запустити свої тести. Зараз я сам працюю над налаштуванням і можу розмістити кілька запропонованих кроків, якщо ви хочете, коли у мене є робочий приклад.

Ось наступні кроки, з якими я працював над тим, щоб працювати над моїм середовищем Java на Mac (працював для мене і в моїх установках Linux (Fedora, CentOS і Ubuntu)):

  1. Завантажте виконувану ніч зі сторінки випусків
  2. Розпакуйте архів
  3. Створіть каталог для маріонетти (тобто 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 tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want

Після встановлення вам просто потрібно буде перейменувати виконуваний файл FF у каталозі програм у "Firefox".

Більш детальну інформацію можна отримати на домашньому кані-gitpopo-firefox . Реквізити smclernon для створення оригінальної скриньки .



3

У разі, якщо хтось цікавиться, як використовувати маріонет в 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, оскільки селен 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.

Однак ми спробували перетворити наш тест на використання Маріонет, і наразі він просто нежиттєздатний, оскільки реалізація драйвера або не завершена, або неполадка. Я б запропонував людям знизити свій Firefox в цей момент.


2

Нові бібліотеки Selenium вже вийшли, згідно з повідомленням: https://github.com/SeleniumHQ/selenium/isissue/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. Це було розумним рішенням без необхідності перебудувати всю бібліотеку Селена.


Я можу підтвердити, що оновлення селену до 2,53.1 вирішило проблему для мене.
Disper

Це зараз найкраща відповідь.
Holistic Developer

2

Випуск FF47 https://github.com/SeleniumHQ/selenium/isissue/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-precision-pangolin/ Або якщо ви є на Mac, як це запропонував хтось інший у цій темі, використовуйте brew.


Відповідно до коментаря 19 годин тому: “ Firefox 47.0.1 був випущений з виправленням. Тепер нам потрібно випустити клієнтські бібліотеки, щоб зібрати накопичувач версій у xpi, який використовується FirefoxDriver . " Це, мабуть, пояснює, чому все ще виникають проблеми з 2.53.0 та 47.0.1.
Отто Г

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

Я перейшов до селену 3.0.0, а версія Firefox - 49.0.1

Ви можете завантажити geckodriver.exe з https://github.com/mozilla/geckodriver/releases

Переконайтеся, що ви завантажуєте лише поштовий файл, файл geckodriver-v0.11.1-win64.zip або win32, відповідно до вашої системи, і витягаєте його в папку.

Покладіть шлях до цієї папки в лапки "Ваш шлях до драйвера". Не забудьте поставити geckodriver.exe в шлях.


1

Зрештою, я встановив додаткову стару версію Firefox (використовується лише для тестування), щоб вирішити цю проблему, окрім моєї регулярної (безпечної та актуальної) останньої установки Firefox.

Це вимагає, щоб веб-драйвер знав, де він може знайти двійковий файл Firefox, який можна встановити через webdriver.firefox.binвластивість.

Що працювало для мене (mac, maven, /tmp/ff46як інсталяційна папка):

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

Щоб встановити стару версію Firefox у спеціальній папці, створіть папку, відкрийте Finder у цій папці, завантажте dmg Firefox та перетягніть її до цього Finder.



1

Станом на вересень 2016 року

Firefox 48.0і selenium==2.53.6добре працювати без помилок

Оновити лише FirefoxUbuntu 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.