Selenium :: WebDriver :: Firefox 및 Chrome 오류

오리온

문제점

1. 브라우저 = Firefox (비 Geckodriver, Selenium v2.53.4)

(한 Linux 씬 클라이언트에서는 작동하지만 다른 씬 클라이언트에서는 작동하지 않습니다 ...)

$ bundle exec rake parallel:spec

Selenium::WebDriver::Error::WebDriverError:
   unable to bind to locking port 7054 within 120 seconds  

2. Broswer = Firefox (Geckodriver v0.14.0, Selenium-webdriver v3.1.0)

$ bundle exec rake parallel:spec

 Net::ReadTimeout:
   Net::ReadTimeout

3. 브라우저 = Chrome (Chromedriver v2.27, Selenium-webdriver v3.1.0)

$ bundle exec rake parallel:spec

Selenium::WebDriver::Error::NoSuchDriverError:
        no such session
          (Driver info: chromedriver=2.27.440175 ,platform=Linux 3.16.0-0.bpo.4-amd64 x86_64)

내 설정

  1. 다음이 설치된 서버 :
    -Linux-Debian x86_64 Wheezy
    -ruby 2.2.5p319 (2016-04-26 수정 버전 54774)
    -Firefox v46.0.3
    -Chrome 56.0.2924.87 (64 비트)
    -ChromeDriver 2.27.440175
    -Xvfb (x11 -xserver-utils v 7.7 ~ 3 (headless gem을 통해)

    보석

    -Selenium v3.1.0 (기존 2.53.4)
    -parallel_tests v2.10.0
    -capybara (2.7.1)
    -rspec-activemodel-mocks (1.0.3)
    -rspec-core (3.4.4)
    -rspec-expectations (3.4. 0)
    -rspec-mocks (3.4.1)
    -rspec-rails (3.4.2)
    -rspec-support (3.4.1)
    -headless (2.2.3) (Xvfb)

  2. 언급 된 서버 설정에서 소프트웨어를 실행하는 여러 씬 클라이언트.
    내 컴퓨터는 여러 컴퓨터 중 하나입니다 ...
    중요 : 동일한 서버에서 동일한 소프트웨어 및 동일한 버전을 실행하는 언급 된 문제가 발생하지 않는 다른 컴퓨터가 있습니다!

문제가 아닌 것

  1. 내 firefox 브라우저 버전과 Selenium 사이의 비 호환성이 아닙니다.
    왜 안돼?
    a) Firefox v46.0.3 및 Selenium v2.53.4가 현재 서버에 설치되어 있으며이 서버의 다른 클라이언트는 언급 된 Firefox 및 Selenium 버전을 사용하여 parallel_tests를 성공적으로 실행합니다.
    b) Selenium 2.53.0과 호환되는 Firefox 버전은 무엇입니까?
  2. 파이어 폭스가 포트 7054를 잠 그게하는 좀비 프로세스 (아직 파이어 폭스 실행 중)가 없습니다.
    이것은 특히 각 오류가 발생한 후 새로운 $ bundle exec rake parallel:spec실행 을 시작하기 전 입니다.
    왜 안돼?
    '내가 시도한 것'의 항목 1과 2를 참조하십시오
    . 문제의 원인은 아니었지만 사실이 아닙니다.
    데이터베이스가 항상 제대로 종료되지는 않았습니다. 업데이트 5를 참조하십시오.
    그러나 종료되지 않은 데이터베이스는 결과였습니다. 문제의.
    문제의 원인이 아닙니다. 솔루션 섹션을 참조하십시오.

사이드 노트

셀레늄 / 파이어 폭스를 작동시키기 위해 언급 된 버전을 설치하려는 사람들을 위해 : 이전 버전 을 설치해도
대부분의 문제가 해결되지 않습니다.

내가 시도한 것

  1. 아직 실행중인 모든 프로세스를 제거했습니다.
    $ killall ruby; killall rspec; killall firefox
    결과 : 실패 ...

  2. 1 단계를 완료하는 것만으로는 모든 좀비 프로세스를 죽일 수 없음을 발견했습니다.
    다른 tty에 로그인 한 후 rspec, ruby ​​및 firefox 프로세스가 여전히 실행 중임을 발견했습니다!
    그래서 내 사용자에서 로그 아웃하고 새 tty에 로그인
    $ kill -9 process_id
    한 다음 다음을 사용하여 모든 좀비 프로세스를 종료했습니다. 그런 다음 $ ps aux모든 프로세스가 정리되었는지 확인하기 위해 다시 실행 합니다.
    결과 : 실패 ...

  3. 문제에 대한 통찰력을 얻으십시오.
    란은 $ lsof -i TCP:7054그 과정을 잡고 무엇을 참조하십시오.
    결과 : 그것은 나의 firefox 테스트 였고, 놀라지 않았고, 진정한 통찰력을 얻지 못했습니다.

  4. 병렬 테스트 데이터베이스가 올바르게 실행되고 있는지 확인했습니다.
    모든 데이터베이스를 삭제하고, 데이터베이스를 다시 만들고, 모든 스키마를 다시로드하고, 다시 시드 (개발)하고, 다시 준비했습니다.
    결과 : 실패 ...이게 원인인지 의심 스러웠지만 이렇게하면 확실히 제거되었습니다.

  5. 깨끗한 시작을 위해 firefox 캐시, 모든 지속 설정, 모든 것을 삭제했습니다.
    결과 : 실패 ...

  6. 프로젝트에서 얻은 모든 로컬 환경 변수를 제거하십시오.
    작업중인 컴퓨터에서 프로젝트 디렉토리를 복사하여이를 수행했습니다.
    그런 다음 다시 실행하십시오 $ bundle exec rake parallel:spec.
    결과 : 실패 ...

  7. 모든 로컬 환경 변수 (프로젝트 및 Linux)를 제거하십시오.
    새로운 Linux 사용자를 생성하여이를 수행했습니다.
    그런 다음 새 사용자로 전환했습니다.
    $ su new_user -l
    필요한 최소 zsh 항목을 복사했습니다.
    그런 다음 결과 : 실패 ...를 실행했습니다 $ bundle exec rake parallel:spec
    .

  8. / etc / hosts에 .
    127.0.0.1 localhost
    결과 : 실패 ...

  9. 단일 스레드 (병렬 아님)에서 테스트 실행.
    $ rspec spec
    결과 : 성공적으로 실행 (문제에 맞지 않음)

  10. 업데이트 1 참조

  11. 업데이트 2 참조

  12. 업데이트 3 참조

  13. 업데이트 4 참조

  14. 업데이트 5 부분 솔루션 참조

  15. 업데이트 6
    디버그 된 Selenium 및 Parallel_tests gems를 참조하십시오.
    결과 : 문제가 Selenium에없는 것으로 확인되었습니다.

  16. 업데이트 7 결과 : 병렬 테스트 실행을 참조하십시오
    . 그런데 왜?

  17. 업데이트 8 결과 :
    발견 된 Selenium 3.1.0은 파일이 자동으로 다운로드되는 방식을 변경했습니다.
    이로 인해 병렬 테스트를 실행하는 동안 테스트가 무기한 중단되었습니다.
    이로 인해 데이터베이스가 열린 상태로 유지되었습니다.

내가 시도 할 것 (업데이트)

  1. 크롬 브라우저에서 chromedriver로 테스트를 실행하고 수정 후 통과하는지 확인합니다.

업데이트 1

크롬 대신 파이어 폭스를 교체했습니다.
단일 테스트를 실행하면 테스트가 크롬으로 성공적으로 완료됩니다.
파이어 폭스에서도 마찬가지입니다.
그러나 실행 $ bundle exec rake parallel:spec
결과 : 실패 ...

Selenium::WebDriver::Error::NoSuchDriverError:
        no such session
          (Driver info: chromedriver=2.27.440175 ,platform=Linux 3.16.0-0.bpo.4-amd64 x86_64)

업데이트 2

selenium-webdriver gem을 최신 gem으로 업데이트했습니다 (이전 v2.53.4, 이제 3.2.2).
결과 : 실패 ...

Selenium::WebDriver::Error::NoSuchDriverError:
        no such session
          (Driver info: chromedriver=2.27.440175 ,platform=Linux 3.16.0-0.bpo.4-amd64 x86_64)

업데이트 3

병렬 테스트 용 잠금 파일 (~ .config / google-chrome)을 찾았습니다.
3 개의 지속 잠금 파일을 식별했습니다.
다른 사용자는 1 개만 사용했습니다.
삭제하고 테스트를 다시 실행했습니다.
결과 : 실패 ...

Selenium::WebDriver::Error::NoSuchDriverError:
        no such session
          (Driver info: chromedriver=2.27.440175 ,platform=Linux 3.16.0-0.bpo.4-amd64 x86_64)

업데이트 4

selenium-webdriver를 v3.1.0 (최신 안정)으로
업그레이드 parallel_tests를 v2.13.0 (최신)으로 업그레이드 Geckodriver v0.14.0 (최신)을
설치 한
다음 실행 $ bundle exec rake parallel:spec
결과 : 실패 ...

Failure/Error: visit "#/login"

Net::ReadTimeout:
   Net::ReadTimeout

업데이트 5

파이어 폭스 (Geckodriver v0.14.0, Selenium-webdriver v3.1.0) 브랜치에 있습니다.
일부는 아직 열려있는 모든 parallel_test 데이터베이스를 삭제해야한다는 것을 깨달았습니다.

@ltsp:~/ap$ bundle exec rake parallel:drop[32]
Couldn't drop ap_test_andre32 : #<ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR:  database "ap_test_andre32" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.
: DROP DATABASE IF EXISTS "ap_test_andre32">
Couldn't drop ap_test_andre25 : #<ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR:  database "ap_test_andre25" is being accessed by other users
DETAIL:  There are 3 other sessions using the database.
: DROP DATABASE IF EXISTS "ap_test_andre25">

rake parallel : spec이 완료되지 않은 경우 (정의없이 중단됨)
프로세스를 수동으로 종료해야합니다.
이렇게하면 데이터베이스가 당시 사용 중이었던 parallel_tests에 잠긴 상태가됩니다.
따라서 그들은 식별되고 정리되어야합니다.

postgres   743  0.0  0.0 222364 33628 ?        Ss   15:30   0:00 postgres: andre ap_test_andre32 [local] idle in transaction                                                               
andre    24581  0.0  0.0   7852  2028 pts/36   S+   15:49   0:00 grep andre32
postgres 26822  0.0  0.0 220032 23400 ?        Ss   15:35   0:00 postgres: andre ap_test_andre32 [local] ALTER TABLE waiting                                                               
postgres 29684  0.0  0.0 220032 24064 ?        Ss   15:40   0:00 postgres: andre ap_test_andre32 [local] ALTER TABLE waiting                                                               

업데이트 5 솔루션 :
데이터베이스 프로세스를 검색하고 모든 프로세스
ps aux | grep test_andre
andre@ltsp:~/ap$ sudo kill -9 743 26822 29684
를 종료 한 다음 데이터베이스를 삭제할 수있었습니다.
bundle exec rake parallel:drop[32]

업데이트 6

파이어 폭스 (Geckodriver v0.14.0, Selenium-webdriver v3.1.0) 브랜치에 있습니다.
parallel_tests 및 Selenium 프로젝트를 로컬로 복제했습니다.
내 보석을 로컬로 복제 된 프로젝트의 경로로 대체했습니다.
오류 스택 추적으로 시작하여 디버깅되었습니다.
결과
셀레늄 3.1.0 및로드 된 geckodriver (마리오네트)로 업데이트되었습니다.
내 firefox 프로필이 Capybara에서 올바르게 설정되지 않았 음을 발견했습니다.
이것은 내 로컬 단일 스레드 테스트를 깨뜨 렸습니다.
이 문제를 해결했습니다.
geckodriver가 FF <48에 사용되지 않음을 발견했습니다.
또한 카피 바라, 셀레늄 3+ & FF48 + 콤보는 아직 사용할 준비가되지 않았다는 것을 발견했습니다.
일부 중요한 기능이 작동하지 않습니다. (오른쪽 클릭, 창 크기 조정 ...)
자세한 내용은 여기를 참조하십시오.
parallel_tests를 조사한 후이를 배제 할 수있었습니다.
firefox 테스트 케이스에서 계속해서 디버그했습니다.
잠금 포트 오류를 ​​가이드로 사용했습니다.
오류의 원인으로 Selenium을 배제했습니다.
스택 추적을 디버깅 한 후 오류 상태가 상속되었을 가능성이 매우 높습니다.
이것은 그 당시 강한 예감이었습니다.
나중에 정확하다는 것이 판명되었습니다.
여기서 요약하면 파이어 폭스에 잠겨있는 프로세스가 있다는 것입니다.
그리고 그들은 셀레늄에 의해 잠겨 있지 않았습니다.

업데이트 7

firefox (Selenium-webdriver v2.53.4) 브랜치에서.
생성 된 새 Linux 사용자로 돌아갔습니다.
업데이트 5에 비추어 실행중인 모든 프로세스를 정리했습니다.
모든 데이터베이스를 삭제했습니다.
$ bundle exec rake parallel:spec
결과 : 병렬 테스트가 작동
했지만 그 이유는 무엇입니까?
데이터베이스는 문제의 원인이 아닙니다.
다른 것이있었습니다.

업데이트 8

파이어 폭스 (Geckodriver v0.14.0, Selenium-webdriver v3.1.0) 브랜치에 있습니다.
테스트가 실패하고 계속 중단 된 이유를 확인했습니다.
이로 인해 업데이트 5 및 6에 설명 된 문제
가 발생했습니다. Selenium이 firefox 프로필 설정을 수락하는 방식이 변경 되었기 때문입니다.
실패한 통합 테스트가 pdf 다운로드를 시작한 테스트임을 확인했습니다.
이전에는 다운로드 모달이 나타나지 않도록 자동화했습니다.
대신 지정된 폴더에 파일을 자동으로 다운로드합니다.
Selenium 3.1.0으로 업데이트하면이 문제가 해결되었습니다.
테스트가 무기한 중단되었습니다.
데이터베이스는 열린 상태로 유지되었습니다.

오리온

업데이트에서 확인 된 문제는 근본 원인이 아닙니다.
근본 원인은 firefox / chrome 브라우저 포트가 닫히지 않고 열린 상태로 유지된다는 것입니다.
htop을 살펴본 결과 Polkitd는 16.5GB의 램을 차지하는 것으로 나타났습니다!
이것은 Polkitd의 메모리 누수 로 인해 발생했습니다 .
문제를 확인한 후 Polkitd 메모리 누수가 알려진 문제임을 확인했습니다.
이 문제는 수정되었지만 Wheezy가 아닌 Linux debian의 이후 배포판에서만 해결되었습니다.
Polkitd를 다시 시작하고 테스트를 병렬로 다시 실행 한 후 작동했습니다!
이것은 내가 깨끗한 프로필로 새로운 Linux 사용자를 처음 만들었을 때 병렬 테스트 문제가 여전히 발생하는 이유를 설명합니다. -메모리 누수는 예측할 수 없습니다.
또한 다른 컴퓨터에서 문제가 발생하지 않은 이유도 설명합니다.
그리고 두 번째로 새로운 사용자를 만들었을 때 병렬 테스트가 작동하는 이유! 휴, 많은 노력이 필요했습니다!

Polkitd는 우리가 실행하는 프린터 나 다른 소프트웨어에 필요하지 않았기 때문에 제거되었습니다.

전반적으로 다른 사람이 잠금 문제가있는 경우 일부 문제가 모든 OS에 공통적이므로 내가 수행 한 일부 프로세스 감지를 따르는 것이 도움이 될 것입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Selenium Python browser = webdriver.Firefox () 오류

Selenium Webdriver - 오류

Chrome 및 Firefox, 인증서 오류 무시

Firefox 및 Chrome의 IndexedDB 오류 : 알 수없는 오류 및 DOMException

Selenium WebDriver Firefox 오류-연결하지 못했습니다.

Selenium Webdriver는 firefox를 열지 만 Selenium 및 NodeJS를 통해 페이지를 가져 오지 않습니다.

Windows vs Linux (selenium)의 Chrome 및 Firefox

Firefox 및 PhantomJS에서 SSL 오류를 무시하도록 selenium-webdriver를 얻으려면 어떻게해야합니까?

Selenium webdriver (JAVA)의 Eclipse에 오류 메시지가있는 빈 Firefox 창

Windows의 Python Selenium Webdriver 오류

Python 및 Selenium의 Firefox Webdriver가있는 다운로드 링크를 클릭하십시오.

Selenium WebDriver, Chrome. Python 테스트를 실행하는 동안 (시작 및 종료시) 구현되지 않은 오류가 발생합니다.

Selenium, Firefox 및 GeckoDriver

지정된 버전의 firefox 및 selenium이있는 오류 창

Javascript 및 Selenium Webdriver (Chrome)를 사용하여 로그인

Selenium Firefox Webdriver 확장 설치

IE에서 org.openqa.selenium.NoSuchElementException 오류가 발생하지만 동일한 코드가 Chrome 및 Firefox에서 제대로 작동합니다.

Selenium으로 WebScraping 중 Selenium WebDriver/ChromeDriver 오류

어설 션 중에 Mocha 및 Selenium WebDriver 오류가 발생했습니다.

TestNG를 통한 Selenium 용 ChromeDriver 및 WebDriver에서 4 개의 오류가 발생 함

Selenium Webdriver 및 Chrome 드라이버-Chrome 드라이버를 실행할 수 없음

Selenium Webdriver 가져오기 ChromeDriverManager 오류

Python Selenium-Chrome, Firefox 및 IE 용 공통 스크립트

지정된 URL로 Firefox 브라우저를 열 수 없음-Selenium Webdriver 및 Java

Eclipse의 Java에서 Selenium WebDriver Firefox를 실행할 때 오류 예외가 표시됩니까?

Selenium WebDriver Firefox 오류: API 속도 제한을 초과했습니다. GH_TOKEN을 추가해야 합니다.

Selenium Chrome WebDriver-셀 목록을 가져 오지 못함

Selenium 및 XUL을 사용하는 Firefox Quantum의 드라이버 오류

selenium-webdriver의 nodejs 서버 오류

TOP 리스트

  1. 1

    PrematureCloseException : 연결이 너무 일찍 닫혔습니다.

  2. 2

    MDRotatingPieChart를 회전하면 각도 대신 x / y 위치가 변경됩니다.

  3. 3

    c # 웹 사이트에서 텍스트를 복사하는 방법 (소스 코드 아님)

  4. 4

    jfreecharts에서 x 및 y 축 선을 조정하는 방법

  5. 5

    ArrayBufferLike의 typescript 정의의 깊은 의미

  6. 6

    Ionic 2 로더가 적시에 표시되지 않음

  7. 7

    복사 / 붙여 넣기 비활성화

  8. 8

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    QT Designer를 사용하여 GUI에 이미지 삽입

  11. 11

    java Apache POI Word 기존 테이블 셀 스타일 및 서식이있는 행 삽입

  12. 12

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

  13. 13

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  14. 14

    C # HttpWebRequest 기본 연결이 닫혔습니다. 전송시 예기치 않은 오류가 발생했습니다.

  15. 15

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  16. 16

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  17. 17

    dataSnapShot.getValue () 반환 데이터베이스에 그겁니다 데이터 종료 널 (null)

  18. 18

    ORA-12557 TNS : 프로토콜 어댑터를로드 할 수 없습니다

  19. 19

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  20. 20

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  21. 21

    C # Asp.net 웹 API-JSON / XML 변환기 API 만들기

뜨겁다태그

보관