Selenium 2.53 tidak berfungsi di Firefox 47

107

Saya mendapatkan kesalahan saat menggunakan Firefox dengan WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Versi Firefox: 47.0
  • Selenium: 2.53.0
  • Windows 10 64 bit

Adakah yang mendapatkan masalah serupa atau tahu apa solusi untuk ini? Ini berfungsi dengan baik dengan Chrome tetapi dengan Firefox tidak ada URL yang dimuat.

veena k
sumber
1
Ya saya juga mendapatkan kesalahan yang sama. Saya mencopot pemasangan dan memasangnya kembali. Jika browser Anda terbuka, setel ulang dan coba.
Kishan Patel
Hai Kishan, saya mencoba seperti yang Anda sebutkan tetapi masih kesalahan yang sama ... jadi saya telah menurunkan versi ke 46.0.1
veena k
Ya. ada beberapa masalah penghenti acara dari mozilla. mereka memperbarui versinya. Anda dapat kembali ke 47. :-)
Kishan Patel
1
Masalah ini memanifestasikan dirinya di OSX dengan kesalahan, '"Firefox.bin" tidak dapat dibuka karena identitas pengembang tidak dapat dikonfirmasi:'. Menurunkan versi ke 46 menyelesaikannya.
hoosteeno

Jawaban:

93

Sayangnya Selenium WebDriver 2.53.0 tidak kompatibel dengan Firefox 47.0. Komponen WebDriver yang menangani browser Firefox ( FirefoxDriver) akan dihentikan. Mulai versi 3.0, Selenium WebDriver akan membutuhkan geckodriverbiner untuk mengelola browser Firefox. Info lebih lanjut disini dan disini .

Oleh karena itu, untuk menggunakan Firefox 47.0 sebagai browser dengan Selenium WebDriver 2.53.0, Anda perlu mengunduh driver Firefox (yang merupakan file biner yang disebut geckodriverpada versi 0.8.0, dan sebelumnya wires) dan mengekspor jalur absolutnya ke variabel webdriver.gecko.driversebagai properti sistem dalam kode Java Anda:

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

Untungnya, pustaka WebDriverManager dapat melakukan pekerjaan ini untuk Anda, yaitu mengunduh biner Marionette yang tepat untuk mesin Anda (Linux, Mac, atau Windows) dan mengekspor nilai properti sistem yang sesuai. Untuk menggunakan pustaka ini, Anda perlu menyertakan ketergantungan ini ke dalam proyek Anda:

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

... lalu jalankan baris ini di program Anda sebelum menggunakan WebDriver:

WebDriverManager.firefoxdriver().setup();

Contoh berjalan lengkap dari kasus uji JUnit 4 menggunakan WebDriver adalah sebagai berikut:

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
    }
}

Perhatikan bahwa Marionette akan menjadi satu-satunya pilihan untuk masa depan (untuk WebDriver 3+ dan Firefox 48+), tetapi saat ini (versi 0.9.0 pada waktu penulisan) tidak terlalu stabil. Lihat peta jalan Marionette untuk detail lebih lanjut.

MEMPERBARUI

Selenium WebDriver 2.53.1 telah dirilis pada 30 Juni 2016. FirefoxDriverbekerja kembali dengan Firefox 47.0.1 sebagai browser.

Boni García
sumber
9
Ini salah MarionetteDriver sebenarnya TIDAK didukung di 47, meskipun FirefoxDriver rusak. Rupanya 47.0.1 akan dirilis (kadang-kadang) di mana FirefoxDriver akan berfungsi kembali. Working MarionetteDriver tidak membuatnya menjadi 47 seperti yang diharapkan. Lihat github.com/mozilla/geckodriver/issues/89 dan bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Catatan: Saya tidak mengatakan MarionettDriver tidak akan berfungsi sama sekali, hanya saja itu rusak untuk TON kasus penggunaan dengan 47. Downgrade adalah satu-satunya pilihan saat ini.
dmansfield
7
Saya memperbarui ke 47.0.1 dan Selenium masih belum terhubung ke Firefox. Itu tidak lagi membuat Firefox crash, tapi saya masih mendapatkan kegagalan untuk terhubung ke 127.0.0.1:7055. Saat saya menjalankan TcpView, tidak ada listener port 7055 setelah Firefox dijalankan.
BardMorgan
2
Saya melihat perilaku yang sama seperti BardMorgan, menggunakan Mac, Mono dan Selenium .NET 2.53.0. Firefox 47.0.1 dimulai, tetapi saya mendapatkan kesalahan batas waktu OpenQA.Selenium.WebDriverException: Gagal memulai soket dalam 45000 milidetik. Mencoba menyambung ke alamat berikut: 127.0.0.1:7055 - netstat tidak menunjukkan pendengar ke port itu.
Otto G
1
Dan sekarang saya juga telah menguji di bawah Windows 10 dan asli .NET, dan masalahnya sama. Netstat menunjukkan bahwa Selenium mencoba menyambung, tetapi tidak ada layanan yang mendengarkan:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G
1
Sebagai catatan, saat mengunjungi about: addons di Firefox 47.0.1 yang diluncurkan oleh Selenium 2.53.0, tab Extensions akan menampilkan "Firefox WebDriver tidak kompatibel dengan Firefox 47.0.1". Ini karena versi maksimalnya adalah 47.0 di github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - versi head sudah diperbaiki, jadi build kode Selenium terbaru dari GitHub seharusnya memperbaiki masalah.
Otto G
18

Coba gunakan firefox 46.0.1. Ini paling cocok dengan Selenium 2.53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
Mahbub Rahman
sumber
Terima kasih Rahman .. ini berfungsi sekarang ... tetapi bagaimana jika persyaratan berfungsi dengan versi terbaru.
veena k
Jika solusinya berhasil, dapatkah Anda menerima jawabannya? :-)
Mahbub Rahman
8
itu bukan solusi, downgrade ke versi sebelumnya.
TiGreX
1
Saya melakukan ini juga (tetapi pergi ke v45) - jika Anda mengikuti jalur ini, pastikan Anda mengganti nama <path> \ Mozilla Firefox \ updater.exe menjadi updater.exe. Nonaktifkan untuk mencegah versi downgrade Anda ditingkatkan kembali ke versi saat ini secara otomatis. Mungkin ada cara lain untuk mencapai ini juga - tetapi menonaktifkan pembaruan di pengaturan opsi tidak berhasil untuk saya.
Drew
10

Saya mengalami masalah yang sama dan menemukan bahwa Anda perlu mengganti driver karena dukungan dibatalkan . Alih-alih menggunakan Pengandar Firefox , Anda perlu menggunakan Pengandar Marionette untuk menjalankan pengujian Anda. Saat ini saya sedang mengerjakan penyiapan sendiri dan dapat memposting beberapa langkah yang disarankan jika Anda mau ketika saya memiliki contoh yang berfungsi.

Berikut adalah langkah-langkah yang saya ikuti untuk membuatnya berfungsi di lingkungan Java saya di Mac (bekerja untuk saya di instalasi Linux saya (Fedora, CentOS dan Ubuntu) juga):

  1. Unduh nightly executable dari halaman rilis
  2. Buka kemasan arsip
  3. Buat direktori untuk Marionette (yaitu, mkdir -p /opt/marionette)
  4. Pindahkan file yang dapat dieksekusi yang tidak dikemas ke direktori yang Anda buat
  5. Perbarui Anda $PATHuntuk memasukkan yang dapat dieksekusi (juga, edit Anda .bash_profilejika Anda mau)
  6. : bangbang: Pastikan Anda chmod +x /opt/marionette/wires-x.x.xagar dapat dieksekusi
  7. Dalam peluncuran Anda, pastikan Anda menggunakan kode berikut di bawah (ini yang saya gunakan di Mac)

Catatan Cepat

Masih tidak berfungsi seperti yang diharapkan, tetapi setidaknya browser tersebut diluncurkan sekarang. Perlu mencari tahu mengapa - saat ini sepertinya saya perlu menulis ulang pengujian saya untuk membuatnya berfungsi.

Cuplikan Java

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

Jika Anda menggunakan OSX menggunakan Homebrew, Anda dapat menginstal versi Firefox lama melalui brew cask:

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

Setelah menginstal, Anda hanya perlu mengganti nama FF Anda yang dapat dieksekusi di direktori Aplikasi menjadi "Firefox".

Info lebih lanjut dapat ditemukan di git repo homebrew-firefox . Alat peraga untuk smclernon untuk membuat tong asli .

Dan Caddigan
sumber
6

Jika Anda menggunakan Mac, lakukan brew install geckodriverdan pergilah!

The Whiz of Oz
sumber
3

Jika ada yang bertanya-tanya bagaimana cara menggunakan Marionette di 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));

Mengganti FirefoxOptions untuk menyediakan fungsi untuk menambah kemampuan tambahan dan mengatur profil Firefox karena selenium v53 belum menyediakan fungsi itu.

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;
    }
}

Catatan: Meluncurkan dengan profil tidak bekerja dengan FF 47, ia bekerja dengan FF 50 Nightly.

Namun, kami mencoba mengonversi pengujian kami untuk menggunakan Marionette, dan itu tidak dapat dilakukan saat ini karena implementasi driver tidak selesai atau bermasalah. Saya menyarankan orang-orang menurunkan versi Firefox mereka saat ini.

Steven
sumber
2

Perpustakaan Selenium baru sekarang keluar, menurut: https://github.com/SeleniumHQ/selenium/issues/2110

Halaman unduhan http://www.seleniumhq.org/download/ sepertinya belum diperbarui, tetapi dengan menambahkan 1 ke versi minor di tautan, saya dapat mengunduh versi C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Ini berfungsi untuk saya dengan Firefox 47.0.1.

Sebagai catatan tambahan, saya hanya dapat membangun ekstensi webdriver.xpi Firefox dari cabang master di GitHub, dengan menjalankan ./go //javascript/firefox-driver:webdriver:run- yang memberikan pesan kesalahan tetapi membangun file build / javascript / firefox-driver / webdriver.xpi , yang saya dapat mengganti nama (untuk menghindari bentrokan nama) dan berhasil memuat dengan metode FirefoxProfile.AddExtension. Itu adalah solusi yang masuk akal tanpa harus membangun kembali seluruh perpustakaan Selenium.

Otto G
sumber
Saya dapat mengonfirmasi bahwa memutakhirkan selenium ke 2.53.1 menyelesaikan masalah untuk saya.
Disper
Ini sekarang jawaban terbaik.
Pengembang Holistik
2

Ini masalah FF47 https://github.com/SeleniumHQ/selenium/issues/2110

Harap turunkan versi ke FF 46 atau lebih rendah (atau coba pengembang FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Petunjuk tentang cara menurunkan versi: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Atau jika Anda di Mac, seperti yang disarankan oleh orang lain di utas ini, gunakan minuman.

Supra
sumber
Menurut sebuah komentar 19 jam lalu: “ Firefox 47.0.1 telah dirilis dengan perbaikan. Sekarang kami perlu merilis pustaka klien untuk mengambil versi bump di xpi yang digunakan oleh FirefoxDriver . ” Itu sepertinya menjelaskan mengapa masih ada masalah dengan 2.53.0 dan 47.0.1.
Otto G
2

Firefox 47.0 berhenti bekerja dengan Webdriver.

Solusi termudah adalah beralih ke Firefox 47.0.1 dan Webdriver 2.53.1. Kombinasi ini bekerja lagi. Faktanya, memulihkan kompatibilitas Webdriver adalah alasan utama di balik rilis 47.0.1, menurut https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ .

pengguna7610
sumber
Sekarang Firefox 47.0.1 juga berfungsi dengan baik dengan Webdriver 2.53.0. Saya telah menguji kombinasi ini.
veena k
2

Anda dapat mencoba menggunakan kode ini,

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

Saya meningkatkan ke selenium 3.0.0 dan versi Firefox adalah 49.0.1

Anda dapat mengunduh geckodriver.exe dari https://github.com/mozilla/geckodriver/releases

Pastikan Anda mengunduh file zip saja, file geckodriver-v0.11.1-win64.zip atau win32 satu sesuai sistem Anda dan ekstrak di folder.

Letakkan jalur untuk folder tersebut di tanda kutip "Jalur Anda ke driver". Jangan lupa untuk meletakkan geckodriver.exe di jalur tersebut.

suketup
sumber
1

Saya akhirnya menginstal Firefox versi lama tambahan (digunakan untuk pengujian saja) untuk mengatasi masalah ini, selain instalasi Firefox terbaru saya yang biasa (aman, terbaru).

Ini mengharuskan webdriver mengetahui di mana ia dapat menemukan biner Firefox, yang dapat disetel melalui webdriver.firefox.binpropertinya.

Apa yang berhasil untuk saya (mac, maven, /tmp/ff46sebagai folder instalasi) adalah:

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

Untuk menginstal versi lama Firefox di folder khusus, buat folder, buka Finder di folder itu, unduh Firefox dmg, dan seret ke Finder itu.

avandeursen
sumber
1

Per September 2016

Firefox 48.0dan selenium==2.53.6bekerja dengan baik tanpa kesalahan

Untuk mengupgrade firefox Ubuntu 14.04 saja

sudo apt-get update
sudo apt-get upgrade firefox
Levon
sumber
1

Menurut saya, solusi terbaik adalah memperbarui ke Selenium 3.0.0, mengunduh geckodriver.exe, dan menggunakan Firefox 47 atau lebih tinggi.

Saya mengubah inisialisasi Firefox menjadi:

 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();
Tomas Kubes
sumber
0

Saya dapat mengonfirmasi bahwa itu selenium 2.53.6berfungsi firefox 44untuk saya di ubuntu 15.

Bernard 'Beta Berlin' Parah
sumber