Selenium 2.53 Firefox 47'de çalışmıyor


107

Firefox'u WebDriver ile kullanırken hata alıyorum.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Firefox sürümü: 47.0
  • Selenyum: 2.53.0
  • Windows 10 64 bit

Benzer bir sorunla karşılaşan veya bunun çözümünün ne olduğu hakkında bir fikri olan var mı? Chrome ile iyi çalışıyor, ancak Firefox ile URL'lerin hiçbiri yüklenmiyor.


1
Evet ben de aynı hatayı alıyorum. Kaldırıp yeniden kuruyorum. Tarayıcınız açıksa sıfırlayın ve deneyin.
Kishan Patel

Merhaba Kishan, bahsettiğiniz gibi denedim ama yine de aynı hata ... bu yüzden 46.0.1'e düşürdüm
veena k

Evet. Mozilla'dan bazı gösteri durdurucu sorunu vardı. sürümü güncellediler. Tekrar 47'ye geri dönebilirsiniz. :-)
Kishan Patel


1
Bu sorun OSX'te bir hata ile kendini gösterir, '"Firefox.bin" açılamıyor çünkü geliştiricinin kimliği doğrulanamıyor:'. 46'ya düşürmek sorunu çözdü.
hoosteeno

Yanıtlar:


93

Ne yazık ki Selenium WebDriver 2.53.0, Firefox 47.0 ile uyumlu değildir. Firefox tarayıcılarını ( FirefoxDriver) işleyen WebDriver bileşeni kullanımdan kaldırılacaktır. Sürüm 3.0'dan itibaren, Selenium WebDriver, geckodriverFirefox tarayıcılarını yönetmek için ikili programa ihtiyaç duyacaktır . Burada ve burada daha fazla bilgi .

Bu nedenle, Selenyum WebDriver 2.53.0 ile tarayıcısı olarak Firefox 47,0 kullanmak için, indirmek gerekir Firefox sürücüsü (adında bir ikili dosya olan geckodriversürümü 0.8.0 itibariyle ve eskiden wires) ve değişkene mutlak yolunu dışa webdriver.gecko.driverolarak Java kodunuzdaki bir sistem özelliği:

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

Neyse ki, WebDriverManager kitaplığı bu işi sizin için yapabilir, yani makineniz için uygun Marionette ikili dosyasını (Linux, Mac veya Windows) indirin ve uygun sistem özelliğinin değerini dışa aktarın. Bu kitaplığı kullanmak için, bu bağımlılığı projenize dahil etmeniz gerekir:

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

... ve sonra WebDriver'ı kullanmadan önce bu satırı programınızda yürütün:

WebDriverManager.firefoxdriver().setup();

WebDriver kullanan bir JUnit 4 test senaryosunun eksiksiz çalışan bir örneği aşağıdaki gibi olabilir:

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'in gelecek için tek seçenek olacağını göz önünde bulundurun (WebDriver 3+ ve Firefox 48+ için), ancak şu anda (yazma sırasında sürüm 0.9.0) çok kararlı değil. Daha fazla ayrıntı için Marionette yol haritasına bir göz atın .

GÜNCELLEME

Selenium WebDriver 2.53.1 , 30 Haziran 2016'da piyasaya sürüldü . Tarayıcı olarak FirefoxDriverFirefox 47.0.1 ile tekrar çalışıyor .


9
Bu yanlış. MarionetteDriver, FirefoxDriver'ın bozuk olmasına rağmen 47'de desteklenmiyor. Görünüşe göre, FirefoxDriver'ın yeniden çalışacağı 47.0.1 (bazen) yayınlanacak. MarionetteDriver, beklendiği gibi 47'ye giremedi. Bkz. Github.com/mozilla/geckodriver/issues/89 ve bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Not: MarionettDriver'ın hiç çalışmayacağını, sadece bir TON için bozuk olduğunu söylemiyorum 47 ile kullanım durumları. Eski sürüm bugün itibariyle tek seçenektir.
dmansfield

7
47.0.1'e güncelledim ve Selenium hala Firefox'a bağlanmıyor. Artık Firefox'u kilitlemiyor, ancak yine de 127.0.0.1:7055'e bağlanamıyorum. TcpView'ı çalıştırdığımda, Firefox başladıktan sonra 7055 numaralı bağlantı noktasının dinleyicisi yok.
BardMorgan

2
Mac, Mono ve Selenium .NET 2.53.0 kullanan BardMorgan ile aynı davranışı görüyorum. Firefox 47.0.1 başlıyor, ancak zaman aşımı hatası alıyorum OpenQA.Selenium.WebDriverException: 45000 milisaniye içinde yuva başlatılamadı. Aşağıdaki adreslere bağlanmaya çalışıldı: 127.0.0.1:7055 - netstat o bağlantı noktasına dinleyici göstermiyor.
Otto G

1
Ve şimdi Windows 10 ve yerel .NET altında da test ettim ve sorun aynı. Netstat, Selenium'un bağlanmaya çalıştığını, ancak hiçbir hizmetin dinlemediğini gösteriyor:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G

1
Kayıt için, Selenium 2.53.0 tarafından başlatılan Firefox 47.0.1'deki eklentiler sayfasını ziyaret ettiğinizde, Uzantılar sekmesinde "Firefox WebDriver Firefox 47.0.1 ile uyumsuz" gösterecektir. Bunun nedeni github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… adresindeki maksimum sürümün 47.0 olmasıdır - ana sürüm düzeltilmiştir, bu nedenle GitHub'ın en son Selenium kodunun derlemesi sorunu çözmelidir .
Otto G

18

Firefox 46.0.1 kullanmayı deneyin. Selenium 2.53 ile en iyi eşleşir

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

Teşekkürler Rahman .. şu anda çalışıyor ... ama ya gereksinim en son sürümle çalışıyorsa.
veena k

Çözüm işe yararsa, lütfen cevabı kabul eder misiniz? :-)
Mahbub Rahman

8
bu bir çözüm değil, önceki bir sürüme geçmektir.
TiGreX

1
Bunu ben de yaptım (ancak v45'e gittim) - bu yoldan giderseniz, eski sürümünüzün mevcut sürüme yükseltilmesini önlemek için <path> \ Mozilla Firefox \ updater.exe'yi updater.exe.disable olarak yeniden adlandırdığınızdan emin olun. otomatik olarak. Bunu başarmanın başka yolları da olabilir - ancak seçenek ayarlarında güncellemeleri devre dışı bırakmak benim için işe yaramadı.
Drew

10

Aynı sorunu yaşadım ve destek kesildiği için sürücüleri değiştirmeniz gerektiğini öğrendim . Firefox Sürücüsünü kullanmak yerine , Marionette'i kullanmanız gerekir. testlerinizi çalıştırmak için Sürücüsünü . Şu anda kurulum üzerinde çalışıyorum ve çalışan bir örneğim olduğunda isterseniz bazı önerilen adımları gönderebilirim.

Bunu Mac'teki Java ortamımda çalıştırmak için izlediğim adımlar (benim için Linux kurulumlarımda (Fedora, CentOS ve Ubuntu) da çalıştı):

  1. Her gece çalıştırılabilir dosyayı sürümler sayfasından indirin
  2. Arşivi açın
  3. Marionette için bir dizin oluşturun (ör. mkdir -p /opt/marionette)
  4. Paketlenmemiş yürütülebilir dosyayı yaptığınız dizine taşıyın
  5. $PATHYürütülebilir dosyayı içerecek şekilde güncelleyin (ayrıca, .bash_profileisterseniz düzenleyin )
  6. : bangbang: chmod +x /opt/marionette/wires-x.x.xÇalıştırılabilir olduğundan emin olun
  7. Lansmanınızda aşağıdaki kodu kullandığınızdan emin olun (Mac'te kullandım)

Hızlı not

Hala beklendiği gibi çalışmıyor, ancak en azından tarayıcı şimdi başlatıldı. Nedenini bulmam gerekiyor - şu anda işe yaraması için testlerimi yeniden yazmam gerekiyor gibi görünüyor.

Java Snippet

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

6

Homebrew kullanıyorsanız OSX kullanıyorsanız, eski Firefox sürümlerini brew cask aracılığıyla yükleyebilirsiniz:

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

Kurduktan sonra, Uygulamalar dizinindeki FF çalıştırılabilir dosyanızı "Firefox" olarak yeniden adlandırmanız gerekir.

Daha fazla bilgi git repo homebrew-firefox'ta bulunabilir . Orijinal fıçıyı yaratmak için smclernon'a destek .



3

C # 'da Marionette'in nasıl kullanılacağını merak eden biri olabilir.

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 geçersiz kılma nedeniyle ek kabiliyet ve seti Firefox profili eklemek fonksiyonu sağlamak için selenyum V53 henüz o fonksiyonu sağlamaz.

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

Not: Profille başlatma FF 47 ile çalışmaz, FF 50 Nightly ile çalışır.

Bununla birlikte, testimizi Marionette kullanacak şekilde dönüştürmeye çalıştık ve şu anda uygulanabilir değil çünkü sürücünün uygulanması ya tamamlanmadı ya da hatalı. İnsanların şu anda Firefox'larını düşürmelerini öneririm.


2

Yeni Selenium kitaplıkları şu adrese göre çıktı: https://github.com/SeleniumHQ/selenium/issues/2110

İndirme sayfası http://www.seleniumhq.org/download/ henüz güncellenmemiş gibi görünüyor, ancak bağlantıdaki küçük sürüme 1 ekleyerek C # sürümünü indirebilirim: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Benim için Firefox 47.0.1 ile çalışıyor.

Bir yan not olarak, GitHub'daki ana şubeden yalnızca webdriver.xpi Firefox uzantısını ./go //javascript/firefox-driver:webdriver:runoluşturabildim - bu bir hata mesajı verdi, ancak build / javascript / firefox-driver / webdriver.xpi dosyasını oluşturdum. yeniden adlandırılabilir (ad çakışmasını önlemek için) ve FirefoxProfile.AddExtension yöntemiyle başarıyla yüklenebilir. Bu, tüm Selenium kütüphanesini yeniden inşa etmek zorunda kalmadan makul bir çözümdü.


Selenyumun 2.53.1'e yükseltilmesinin sorunu benim için çözdüğünü doğrulayabilirim.
Disper

Bu şimdi en iyi cevap.
Bütünsel Geliştirici

2

Bu bir FF47 sorunu https://github.com/SeleniumHQ/selenium/issues/2110

Lütfen FF 46 veya daha düşük sürüme geçin (veya FF48 geliştiricisini https://developer.mozilla.org/en-US/Firefox/Releases/48 deneyin )

Nasıl düşürüleceğine ilişkin talimatlar: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Veya eğer öyleyseniz Mac'te, bu konudaki başka birinin önerdiği gibi brew kullanın.


19 saat önce yapılan bir yoruma göre: “ Firefox 47.0.1 bir düzeltme ile yayınlandı. Şimdi FirefoxDriver tarafından kullanılan xpi'de bir sürüm artışını algılamak için istemci kitaplıklarını yayınlamamız gerekiyor . " Bu, neden hala 2.53.0 ve 47.0.1 ile sorunlar olduğunu açıklıyor gibi görünüyor.
Otto G

2

Firefox 47.0, Webdriver ile çalışmayı durdurdu.

En kolay çözüm Firefox 47.0.1 ve Webdriver 2.53.1'e geçmektir. Bu kombinasyon yine işe yarıyor. Aslında, https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ 'e göre, Webdriver uyumluluğunu geri yüklemek 47.0.1 sürümünün arkasındaki ana nedendi .


Artık Firefox 47.0.1, Webdriver 2.53.0 ile de sorunsuz çalışıyor. Bu kombinasyonu test ettim.
veena k

2

Bu kodu kullanmayı deneyebilirsiniz,

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

Selenium 3.0.0'a yükselttim ve Firefox sürümü 49.0.1

Geckodriver.exe dosyasını https://github.com/mozilla/geckodriver/releases adresinden indirebilirsiniz.

Sisteminize göre yalnızca zip dosyasını, geckodriver-v0.11.1-win64.zip dosyasını veya win32 dosyasını indirdiğinizden ve bir klasöre çıkardığınızdan emin olun.

Bu klasörün yolunu "Sürücüye giden yolunuz" tırnaklarına koyun. Geckodriver.exe'yi yola koymayı unutmayın.


1

Sonunda, bunu çözmek için en son (güvenli, güncel) en son Firefox kurulumumun yanı sıra Firefox'un eski bir sürümünü (yalnızca test için kullanılır) yükledim.

Bu, web sürücüsünün, webdriver.firefox.binmülk aracılığıyla ayarlanabilen Firefox ikili dosyasını nerede bulabileceğini bilmesini gerektirir .

Benim için işe yarayan şey (mac, maven, /tmp/ff46kurulum klasörü olarak):

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

Özel bir klasöre Firefox'un eski bir sürümünü yüklemek için, klasörü oluşturun, bu klasörde Finder'ı açın, Firefox dmg dosyasını indirin ve bu Finder'a sürükleyin.



1

Eylül 2016 itibarıyla

Firefox 48.0ve selenium==2.53.6herhangi bir hata olmadan iyi çalışır

Yalnızca Firefox'u yükseltmek Ubuntu 14.04 için

sudo apt-get update
sudo apt-get upgrade firefox

1

Bana öyle geliyor ki en iyi çözüm Selenium 3.0.0'a güncelleme yapmak, geckodriver.exe'yi indirmek ve Firefox 47 veya üstünü kullanmak.

Firefox başlatmayı şu şekilde değiştirdim:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.