सेलेनियम 2.53 फ़ायरफ़ॉक्स 47 पर काम नहीं कर रहा है


107

मैं वेबड्राइवर के साथ फ़ायरफ़ॉक्स का उपयोग करते समय त्रुटि प्राप्त कर रहा हूं।

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • फ़ायरफ़ॉक्स संस्करण: 47.0
  • सेलेनियम: 2.53.0
  • विंडोज 10 64 बिट

क्या किसी को भी इसी तरह का मुद्दा मिल रहा है या कोई भी विचार इसके लिए क्या उपाय है? यह क्रोम के साथ ठीक काम कर रहा है, लेकिन फ़ायरफ़ॉक्स के साथ कोई भी URL लोड नहीं हो रहा है।


1
हाँ मुझे भी वही त्रुटि मिल रही है। मैं इसकी स्थापना रद्द कर रहा हूं और इसे फिर से इंस्टॉल कर रहा हूं। यदि आपका ब्राउज़र खुला है, तो उसे रीसेट करें और प्रयास करें।
किशन पटेल

हाय किशन, मैंने आपके बताए अनुसार प्रयास किया लेकिन अभी भी वही त्रुटि है ... इसलिए मैंने 46.0.1 पर डाउनग्रेड कर दिया है
वीणा के

हाँ। मोज़िला से कुछ शो स्टॉपर मुद्दा था। उन्होंने संस्करण को अद्यतन किया। आप फिर से 47 पर आ सकते हैं। :-)
किशन पटेल


1
यह समस्या OSX पर एक त्रुटि के साथ प्रकट होती है, '' Firefox.bin '' को खोला नहीं जा सकता क्योंकि डेवलपर की पहचान की पुष्टि नहीं की जा सकती है: ''। 46 में डाउनग्रेड करके इसे हल किया।
होस्टीनो

जवाबों:


93

दुर्भाग्य से सेलेनियम वेबड्राइवर 2.53.0 फ़ायरफ़ॉक्स 47.0 के साथ संगत नहीं है। वेबड्राइवर घटक जो फ़ायरफ़ॉक्स ब्राउज़रों को संभालता है ( FirefoxDriver) बंद हो जाएगा। संस्करण 3.0 के रूप में, सेलेनियम वेबड्राइवर को geckodriverफ़ायरफ़ॉक्स ब्राउज़रों को प्रबंधित करने के लिए बाइनरी की आवश्यकता होगी । अधिक जानकारी यहाँ और यहाँ

इसलिए, सेलेनियम वेबड्राइवर 2.53.0 के साथ फ़ायरफ़ॉक्स 47.0 को ब्राउज़र के रूप में उपयोग करने के लिए, आपको फ़ायरफ़ॉक्स ड्राइवर डाउनलोड करना होगा (जो कि एक बाइनरी फ़ाइल है जिसे geckodriverसंस्करण 0.8.0, और पूर्व में कहा जाता है wires) और इसके पूर्ण पथ को चर के webdriver.gecko.driverरूप में निर्यात करें आपके जावा कोड में एक सिस्टम गुण:

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

सौभाग्य से, लाइब्रेरी WebDriverManager आपके लिए यह काम कर सकता है, अर्थात आपकी मशीन (लिनक्स, मैक, या विंडोज) के लिए उचित मैरियनेट बाइनरी डाउनलोड करें और उचित सिस्टम प्रॉपर्टी के मूल्य का निर्यात करें। इस लाइब्रेरी का उपयोग करने के लिए, आपको इस निर्भरता को अपनी परियोजना में शामिल करना होगा:

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

... और फिर WebDriver का उपयोग करने से पहले अपने कार्यक्रम में इस लाइन को निष्पादित करें:

WebDriverManager.firefoxdriver().setup();

WebDriver का उपयोग करके एक JUnit 4 परीक्षण मामले का एक पूरा चल रहा उदाहरण निम्नानुसार हो सकता है:

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

ध्यान रखें कि मैरियनेट भविष्य के लिए एकमात्र विकल्प होगा (वेबड्राइवर 3+ और फ़ायरफ़ॉक्स 48+ के लिए), लेकिन वर्तमान में (लेखन समय में संस्करण 0.9.0) बहुत स्थिर नहीं है। Marionette रोडमैप पर एक नज़र डालेंआगे के विवरण के लिए ।

अपडेट करें

सेलेनियम वेबड्राइवर 2.53.1 30 जून 2016 को जारी किया गया है। FirefoxDriverफ़ायरफ़ॉक्स 47.0.1 के साथ फिर से ब्राउज़र के रूप में काम कर रहा है।


9
यह गलत है। MarionetteDriver वास्तव में 47 में समर्थित नहीं है, इस तथ्य के बावजूद कि FirefoxDriver टूट गया है। जाहिरा तौर पर 47.0.1 (कुछ समय) जारी किया जाएगा जिसमें फ़ायरफ़ॉक्सड्राइवर फिर से काम कर रहा होगा। काम कर रहे MarionetteDriver ने 47 को उम्मीद के मुताबिक नहीं बनाया। देखें github.com/mozilla/geckodriver/issues/89 और bugzilla.mozilla.org/show_bug.cgi?id=1279950 - नोट: मैं यह नहीं कह रहा हूं कि MarionettDriver काम नहीं करेगा, बस यह एक TON के लिए टूट गया है 47 के साथ उपयोग के मामले। डाउनग्रेड आज के रूप में एकमात्र विकल्प है।
डेमन्सफील्ड

7
मैंने 47.0.1 को अपडेट किया और सेलेनियम अभी भी फ़ायरफ़ॉक्स से कनेक्ट नहीं हो रहा है। यह अब फ़ायरफ़ॉक्स को क्रैश नहीं करता है, लेकिन मुझे अभी भी 127.0.0.1:7055 से कनेक्ट करने में विफलता मिलती है। जब मैं TcpView चलाते हैं, फ़ायरफ़ॉक्स शुरू होने के बाद पोर्ट 7055 का कोई श्रोता नहीं होता है।
बार्डमोरन

2
मैं मैक, मोनो और सेलेनियम .NET 2.53.0 का उपयोग करते हुए बार्डमर्गन के समान व्यवहार देखता हूं। फ़ायरफ़ॉक्स 47.0.1 शुरू होता है, लेकिन मुझे टाइमआउट त्रुटि मिलती है OpenQA.Selenium.WebDriverException: 45000 मिलीसेकंड के भीतर सॉकेट शुरू करने में विफल। निम्नलिखित पतों से जुड़ने का प्रयास किया गया: 127.0.0.1:7055 - नेटस्टैट उस बंदरगाह के लिए कोई श्रोता नहीं दिखाता है।
ओटो जी

1
और मैंने अब विंडोज 10 और देशी .NET के तहत भी परीक्षण किया है, और समस्या समान है। नेस्टैट दिखाता है कि सेलेनियम कनेक्ट करने की कोशिश करता है, लेकिन कोई सेवा नहीं सुन रहा है:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
ओटो जी

1
रिकॉर्ड के लिए, जब सेलेनियम 2.53.0 द्वारा लॉन्च किए गए फ़ायरफ़ॉक्स 47.0.1 में addons के बारे में, एक्सटेंशन्स टैब दिखाएगा कि "फ़ायरफ़ॉक्स वेबड्राइवर फ़ायरफ़ॉक्स 47.0.1 के साथ असंगत है।" यह अधिकतम संस्करण 47.0 github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… में होने के कारण है - सिर संस्करण तय हो गया है, इसलिए GitHub से नवीनतम सेलेनियम कोड का निर्माण समस्या को ठीक करना चाहिए।
ओटो जी

18

फ़ायरफ़ॉक्स 46.0.1 का उपयोग करने का प्रयास करें। यह सेलेनियम 2.53 के साथ सबसे अच्छा मेल खाता है

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

धन्यवाद रहमान .. यह अब काम कर रहा है ... लेकिन क्या होगा अगर आवश्यकता नवीनतम संस्करण के साथ काम करने की है।
वीणा के

यदि समाधान काम करता है, तो क्या आप जवाब को स्वीकार कर सकते हैं? :-)
महबूब रहमान

8
एक समाधान नहीं है, एक पिछले संस्करण के लिए डाउनग्रेड है।
TiGreX

1
मैंने यह भी किया (लेकिन v45 में चला गया) - यदि आप इस रास्ते से नीचे जाते हैं, तो सुनिश्चित करें कि आप डाउनग्रेड किए गए संस्करण को वर्तमान संस्करण में वापस करने से रोकने के लिए updater.exe.disable का नाम बदलकर <path> \ Mozilla Firefox \ updater.exe करें। खुद ब खुद। इसे प्राप्त करने के अन्य तरीके भी हो सकते हैं - लेकिन विकल्प सेटिंग में अपडेट अक्षम करना मेरे लिए कारगर नहीं था।
ड्रू

10

मेरे पास एक ही मुद्दा था और पता चला कि आपको ड्राइवरों को स्विच करने की आवश्यकता है क्योंकि समर्थन गिरा दिया गया थाफ़ायरफ़ॉक्स चालक का उपयोग करने के बजाय , आपको Marionette का उपयोग करने की आवश्यकता है अपने परीक्षण चलाने के लिए चालक । मैं वर्तमान में स्वयं सेटअप के माध्यम से काम कर रहा हूं और यदि आप काम करना चाहते हैं तो कुछ सुझाए गए चरणों को पोस्ट कर सकते हैं।

यहां मैंने अपने जावा वातावरण पर मैक पर काम करने के लिए जो कदम उठाए हैं, वे (मेरे लिनक्स इंस्टालेशन में मेरे लिए काम किया है) (फेडोरा, सेंटोस और उबंटू) भी:

  1. रिलीज़ पृष्ठ से रात के निष्पादन योग्य डाउनलोड करें
  2. संग्रह अनपैक करें
  3. Marionette के लिए एक निर्देशिका बनाएँ (यानी, mkdir -p /opt/marionette ) के
  4. आपके द्वारा बनाई गई निर्देशिका में अनपैक किए गए निष्पादन योग्य फ़ाइल को स्थानांतरित करें
  5. $PATHनिष्पादन योग्य को शामिल करने के लिए अपना अपडेट करें (साथ ही, अपना संपादन करें.bash_profile यदि आप चाहें तो )
  6. : बंगबैंग: सुनिश्चित करें कि आप chmod +x /opt/marionette/wires-x.x.x इतना है कि यह निष्पादन योग्य है
  7. अपने लॉन्च में, सुनिश्चित करें कि आप नीचे दिए गए कोड का उपयोग करते हैं (यह मैंने मैक पर उपयोग किया है)

त्वरित नोट

अभी भी उम्मीद के मुताबिक काम नहीं हुआ है, लेकिन कम से कम अब ब्राउज़र लॉन्च हो गया है। यह जानने की आवश्यकता है कि - अभी ऐसा लग रहा है कि मुझे इसे काम करने के लिए अपने परीक्षणों को फिर से लिखना होगा।

जावा स्निपेट

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

6

यदि आप होमब्रे का उपयोग करके OSX पर हैं, तो आप पुराने फ़ायरफ़ॉक्स संस्करणों को काढ़ा के माध्यम से स्थापित कर सकते हैं:

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

स्थापित करने के बाद, आपको एप्लिकेशन फ़ायरफ़ॉक्स में अपने एफएफ निष्पादन योग्य का नाम बदलकर "फ़ायरफ़ॉक्स" करना होगा।

अधिक जानकारी git रेपो होमब्रेव-फ़ायरफ़ॉक्स में पाई जा सकती है । मूल पीपा बनाने के लिए शुक्राणु के लिए सहारा ।



3

मामले में कोई भी सोच रहा है कि C # में Marionette का उपयोग कैसे किया जाए।

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 को ओवरराइड करना क्योंकि सेलेनियम 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;
    }
}

नोट: प्रोफ़ाइल के साथ लॉन्च करना एफएफ 47 के साथ काम नहीं करता है, यह एफएफ 50 नाइटली के साथ काम करता है।

हालांकि, हमने मैरियोनेट का उपयोग करने के लिए अपने परीक्षण को बदलने की कोशिश की, और यह फिलहाल व्यवहार्य नहीं है क्योंकि ड्राइवर का कार्यान्वयन या तो पूरा नहीं हुआ है या छोटी गाड़ी नहीं है। मेरा सुझाव है कि लोग इस समय अपने फ़ायरफ़ॉक्स को डाउनग्रेड करें।


2

नई सेलेनियम लाइब्रेरी अब बाहर हैं: 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

यह मेरे लिए फ़ायरफ़ॉक्स 47.0.1 के साथ काम करता है।

एक साइड नोट के रूप में, मैं GitHub में मास्टर ब्रांच से सिर्फ webdriver.xpi फ़ायरफ़ॉक्स एक्सटेंशन बनाने में सक्षम था , जिसे चलाकर ./go //javascript/firefox-driver:webdriver:run- जिसने एक त्रुटि संदेश दिया लेकिन बिल्ड / जावास्क्रिप्ट / फ़ायरफ़ॉक्स-ड्राइवर / webdverver.xpi फ़ाइल का निर्माण किया, जिसे मैंने किया नाम बदल सकते हैं (एक नाम से बचने के लिए) और सफलतापूर्वक FirefoxProfile.AddExtension विधि के साथ लोड करें। यह पूरे सेलेनियम पुस्तकालय के पुनर्निर्माण के बिना एक उचित समाधान था।


मैं पुष्टि कर सकता हूं कि सेलेनियम को 2.53.1 पर अपग्रेड करना मेरे लिए समस्या का हल है।
बजे

यह अब सबसे अच्छा जवाब है।
होलिस्टिक डेवलपर

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-prepret-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ या यदि आप हैं मैक पर, जैसा कि इस धागे में किसी और द्वारा सुझाए गए काढ़ा का उपयोग करें।


19 घंटे पहले एक टिप्पणी के अनुसार: “ फ़ायरफ़ॉक्स 47.0.1 को एक फिक्स के साथ जारी किया गया है। फ़ायरफ़ॉक्सड्राइवर द्वारा उपयोग किए जाने वाले xpi में वर्जन बम्प लेने के लिए अब हमें क्लाइंट लाइब्रेरी को रिलीज़ करने की आवश्यकता है । " यह समझाने में लगता है कि 2.53.0 और 47.0.1 के साथ अभी भी समस्याएं क्यों हैं।
ओटो जी

2

फ़ायरफ़ॉक्स 47.0 ने वेबड्राइवर के साथ काम करना बंद कर दिया।

सबसे आसान समाधान फ़ायरफ़ॉक्स 47.0.1 और वेबड्राइवर 2.53.1 पर स्विच करना है। यह संयोजन फिर से काम करता है। वास्तव में, https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ के अनुसार, 47.0.1 रिलीज़ के पीछे वेबड्राइवर संगतता को बहाल करना मुख्य कारण था ।


अब फ़ायरफ़ॉक्स 47.0.1 भी वेबड्राइवर 2.53.0 के साथ ठीक काम कर रहा है। मैंने इस संयोजन का परीक्षण किया है।
वीणा k

2

आप इस कोड का उपयोग करके देख सकते हैं,

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

मैंने सेलेनियम 3.0.0 और फ़ायरफ़ॉक्स संस्करण 49.0.1 में अपग्रेड किया है

आप gegodriver.exe को https://github.com/mozilla/geckodriver/releases से डाउनलोड कर सकते हैं

सुनिश्चित करें कि आप जिप फाइल को ही डाउनलोड करें, geckodriver-v0.11.1-win64.zip फाइल या win32 को अपने सिस्टम के अनुसार एक फोल्डर में निकालें।

उस फ़ोल्डर के लिए पथ को "ड्राइवर को आपका पथ" उद्धरण में रखें। पथ में geckodriver.exe डालना न भूलें।


1

मैंने अंततः अपने नियमित (सुरक्षित, अद्यतित) नवीनतम फ़ायरफ़ॉक्स इंस्टॉलेशन के अलावा, इसे हल करने के लिए फ़ायरफ़ॉक्स (केवल परीक्षण के लिए प्रयुक्त) का एक अतिरिक्त पुराना संस्करण स्थापित किया।

इसके लिए यह जानने के लिए वेबड्राइवर की आवश्यकता होती है कि वह फ़ायरफ़ॉक्स बाइनरी को कहां खोज सकता है, जिसे webdriver.firefox.binसंपत्ति के माध्यम से सेट किया जा सकता है।

मेरे लिए क्या काम किया (मैक, maven, /tmp/ff46स्थापना फ़ोल्डर के रूप में) है:

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

समर्पित फ़ोल्डर में फ़ायरफ़ॉक्स के पुराने संस्करण को स्थापित करने के लिए, फ़ोल्डर बनाएं, उस फ़ोल्डर में फाइंडर खोलें, फ़ायरफ़ॉक्स डीएमजी डाउनलोड करें और इसे उस फ़ाइंडर पर खींचें।



1

सितंबर 2016 तक

Firefox 48.0और selenium==2.53.6बिना किसी त्रुटि के ठीक काम करते हैं

केवल फ़ायरफ़ॉक्स को अपग्रेड करने के लिएUbuntu 14.04

sudo apt-get update
sudo apt-get upgrade firefox

1

यह मुझे लगता है कि सबसे अच्छा समाधान सेलेनियम 3.0.0 को अद्यतन करना है, geckodriver.exe डाउनलोड करें और फ़ायरफ़ॉक्स 47 या उच्चतर का उपयोग करें।

मैंने फ़ायरफ़ॉक्स आरंभीकरण को इसमें बदल दिया:

 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.