Firefox 47에서 Selenium 2.53이 작동하지 않음


107

WebDriver와 함께 Firefox를 사용하는 동안 오류가 발생합니다.

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
예 나도 같은 오류가 발생합니다. 다시 제거하고 다시 설치합니다. 브라우저가 열려 있으면 재설정하고 시도하십시오.
Kishan 파텔

안녕하세요 Kishan, 말씀 드린대로 시도했지만 여전히 동일한 오류가 발생합니다. 그래서 46.0.1로 다운 그레이드했습니다.
veena k

네. mozilla에서 일부 쇼 스토퍼 문제가 발생했습니다. 그들은 버전을 업데이트했습니다. 다시 47 :-)으로 롤백 할 수 있습니다
Kishan 파텔


1
이 문제는 OSX에서 '개발자의 신원을 확인할 수 없기 때문에 ""Firefox.bin "을 열 수 없습니다."라는 오류와 함께 나타납니다. 46으로 다운 그레이드하면 해결되었습니다.
hoosteeno

답변:


93

불행히도 Selenium WebDriver 2.53.0은 Firefox 47.0과 호환되지 않습니다. Firefox 브라우저 ( FirefoxDriver) 를 처리하는 WebDriver 구성 요소 는 중단됩니다. 버전 3.0부터 Selenium WebDriver는 geckodriverFirefox 브라우저를 관리하기 위해 바이너리 가 필요 합니다. 여기여기에 더 많은 정보가 있습니다 .

따라서 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 라이브러리 가이 작업을 수행 할 수 있습니다. 즉, 컴퓨터 (Linux, Mac 또는 Windows)에 적합한 Marionette 바이너리를 다운로드하고 적절한 시스템 속성 값을 내보낼 수 있습니다. 이 라이브러리를 사용하려면이 종속성을 프로젝트에 포함해야합니다.

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

Marionette는 미래 (WebDriver 3+ 및 Firefox 48+의 경우)를위한 유일한 옵션이 될 것이지만 현재 (작성 시점에 0.9.0 버전)은 그다지 안정적이지 않습니다. 자세한 내용 은 Marionette 로드맵 을 참조하십시오.

최신 정보

Selenium WebDriver 2.53.1 은 2016 년 6 월 30 일에 출시되었습니다 . 브라우저 FirefoxDriver로 Firefox 47.0.1 과 함께 다시 작동 합니다.


9
이것은 올바르지 않습니다. MarionetteDriver는 FirefoxDriver가 손상 되었음에도 불구하고 실제로 47에서 지원되지 않습니다. 분명히 47.0.1이 릴리스 될 것이며 FirefoxDriver가 다시 작동 할 것입니다. 작동하는 MarionetteDriver는 예상대로 47로 만들지 못했습니다. github.com/mozilla/geckodriver/issues/89bugzilla.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 2016-06-28

2
Mac, Mono 및 Selenium .NET 2.53.0을 사용하는 BardMorgan과 동일한 동작을 봅니다. 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
Otto G

1
기록을 위해 Selenium 2.53.0에서 시작한 Firefox 47.0.1의 about : addons를 방문하면 확장 탭에 "Firefox WebDriver가 Firefox 47.0.1과 호환되지 않습니다."라고 표시됩니다. 이는 github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… 에서 최대 버전이 47.0이기 때문입니다 . 헤드 버전이 수정되었으므로 GitHub의 최신 Selenium 코드를 빌드하면 문제가 해결됩니다.
Otto G

18

firefox 46.0.1을 사용해보십시오. Selenium 2.53과 가장 잘 어울립니다.

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

감사합니다 Rahman .. 지금 작동 중입니다 ... 그러나 요구 사항이 최신 버전에서 작동한다면 어떻게 될까요?
veena k

솔루션이 작동하면 대답을 수락 할 수 있습니까? :-)
Mahbub 라만

8
그것은 해결책이 아니며 이전 버전으로 다운 그레이드됩니다.
TiGreX

1
저도이 작업을 수행했습니다 (하지만 v45로 이동)-이 경로로 이동하면 <path> \ Mozilla Firefox \ updater.exe의 이름을 updater.exe.disable로 변경하여 다운 그레이드 된 버전이 현재 버전으로 다시 업그레이드되지 않도록합니다. 자동으로. 이 작업을 수행하는 다른 방법도있을 수 있지만 옵션 설정에서 업데이트를 비활성화하면 효과가 없었습니다.
Drew

10

나는 같은 문제가 있었고 지원이 중단 되었기 때문에 드라이버를 전환해야한다는 것을 알게되었습니다 . Firefox 드라이버 를 사용하는 대신 테스트를 실행하려면 Marionette 드라이버 를 사용해야합니다 . 저는 현재 직접 설정 작업을하고 있으며 작업 예제가있을 때 원하는 경우 몇 가지 제안 된 단계를 게시 할 수 있습니다.

Mac의 Java 환경에서이 작업을 수행하기 위해 수행 한 단계는 다음과 같습니다 (내 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에서 사용한 코드 임).

퀵 노트

여전히 예상대로 작동하지 않지만 적어도 지금 브라우저가 시작됩니다. 이유를 알아 내야합니다. 지금은 테스트를 다시 작성해야하는 것 같습니다.

자바 스 니펫

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

6

Homebrew를 사용하는 OSX를 사용하는 경우 brew cask를 통해 이전 Firefox 버전을 설치할 수 있습니다.

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

설치 후 Applications 디렉토리에있는 FF 실행 파일의 이름을 "Firefox"로 변경하면됩니다.

자세한 정보는 git repo homebrew-firefox 에서 찾을 수 있습니다 . 원래 통 을 만들기위한 smclernon의 소품 .



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

추가 기능을 추가하고 Firefox 프로필을 설정하는 기능을 제공하도록 FirefoxOptions를 재정의합니다. 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

https://github.com/SeleniumHQ/selenium/issues/2110 에 따르면 새로운 Selenium 라이브러리가 출시되었습니다.

다운로드 페이지 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에서 작동합니다.

보조 노트로서, 나는 할 수 빌드 그냥했다 webdriver.xpi 실행하여, GitHub의에서 마스터 지점에서 파이어 폭스 확장 ./go //javascript/firefox-driver:webdriver:run오류 메시지 듯했으나 구축 않았다 - 빌드 / 자바 스크립트 / 파이어 폭스 드라이버 / webdriver.xpi의 , 어떤 I을 파일을 이름이 충돌하지 않도록 이름을 바꾸고 FirefoxProfile.AddExtension 메서드를 사용하여 성공적으로로드 할 수 있습니다. 전체 Selenium 라이브러리를 다시 빌드하지 않고도 합리적인 해결 방법이었습니다.


셀레늄을 2.53.1로 업그레이드하면 문제가 해결되었음을 확인할 수 있습니다.
Disper

이것은 이제 가장 좋은 대답입니다.
전체적 개발자

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이 수정 된 상태로 출시되었습니다. 이제 FirefoxDriver에서 사용하는 xpi의 버전 범프를 선택하기 위해 클라이언트 라이브러리를 출시해야합니다 . " 2.53.0 및 47.0.1에 여전히 문제가있는 이유를 설명하는 것 같습니다.
Otto G

2

Firefox 47.0이 Webdriver에서 작동을 중지했습니다.

가장 쉬운 해결책은 Firefox 47.0.1 및 Webdriver 2.53.1로 전환하는 것입니다. 이 조합은 다시 작동합니다. 사실, https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ 에 따르면 Webdriver 호환성을 복원하는 것이 47.0.1 릴리스의 주된 이유였습니다 .


이제 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입니다.

https://github.com/mozilla/geckodriver/releases 에서 geckodriver.exe를 다운로드 할 수 있습니다.

시스템에 따라 zip 파일, geckodriver-v0.11.1-win64.zip 파일 또는 win32 파일 만 다운로드하고 폴더에 압축을 풉니 다.

해당 폴더의 경로를 "Your path to driver"따옴표 안에 넣으십시오. 경로에 geckodriver.exe를 넣는 것을 잊지 마십시오.


1

최종적으로이 문제를 해결하기 위해 일반적인 (안전한 최신) 최신 Firefox 설치 외에 추가로 이전 버전의 Firefox (테스트 용으로 만 사용됨)를 설치했습니다.

이를 위해서는 webdriver가 webdriver.firefox.bin속성을 통해 설정할 수있는 Firefox 바이너리를 찾을 수있는 위치를 알아야 합니다.

나를 위해 일한 것 (mac, maven, /tmp/ff46설치 폴더)은 다음과 같습니다.

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

전용 폴더에 이전 버전의 Firefox를 설치하려면 폴더를 만들고 해당 폴더에서 Finder를 열고 Firefox dmg를 다운로드 한 다음 해당 Finder로 드래그합니다.



1

2016 년 9 월 현재

Firefox 48.0selenium==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();

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.