2017-03-07 5 views
0

Pry (또한 Rubymine과 함께) 코드의 특정 지점을 디버그하려고합니다 (binding.pry 사용). 카피 바라의 save_screenshot을 호출 한 후 카피 바라 관련 명령을 실행할 수 없습니다 (모든 명령은 시간 초과 됨). 이것은 "디버그 모드"와 Poltergeist 같은 다른 웹 드라이버에서 작동합니다.Capybara Webkit을 사용하는 동안 디버그에서 Capybara 명령을 실행 하시겠습니까?

+0

설정에서 변경된 기타 사항은 무엇입니까? https://github.com/pry/pry/wiki/FAQ#threads-dont-work-whats-wrong –

+0

@ThomasWalpole - 나는 Mac을 사용하지 않기 때문에 나는 믿지 않는다. Linux와 Windows 모두에서이 문제가 발생합니다.) 또한이 문제는 Pry뿐만 아니라 Rubymine의 Debugger (기본적으로'debug-ruby-ide'gem이라고 생각합니다)에서도 잘 나타나지 않습니다. 'config.default_driver = : poltergiest'와'config.javascript_driver = : webkit'을 사용할 때 Capybara 명령을 실행할 수 있습니다 만'config.default_driver = : webkit'으로 변경하면 작동을 멈 춥니 다. 제가 생각하기에 당신의 답장에 근거하여 가정하겠습니다. 만약 그렇다면 - 아마도 Git repo에서 더 자세한 내용으로 버그를 열어야합니까? – Okiba

+0

작동하지만, 사용되는 정확한 디버거 (및 버전)에 따라 IO 및 스레드 잠금에 문제가 있습니다 (예 : https://github.com/thoughtbot/capybara-webkit/issues/718 및 https). : //github.com/deivid-rodriguez/byebug/issues/193 –

답변

0

오늘 디버깅을 시도하는 데 두 시간이 걸렸습니다. 나는 그 문제를 발견했거나 적어도 그 문제를 발견했다.

우리 웹 사이트에는 다른 브라우저 창에서 콘텐츠를 여는 링크가 있습니다. 자동화가 꽤 오래 되었기 때문에 Selenium은 윈도우 컨텍스트를 바꿀 수있는 적절한 방법이 없었기 때문에 URL로 열린 페이지를 visit에 놓았습니다. 그리고 이것에 의해 주어진 시간에 오직 하나의 윈도우 만 열리게됩니다 .

이 방법이 효과적이지만 "디버그 모드"(예 : binding.pry 사용)에서이 테스트를 실행하면 이상한 일이 발생합니다. 특정 페이지에서 어떤 작업을 수행하기 바로 전에 우리는 Capybara의 save_screenshot 메소드를 사용하여 스크린 샷을 찍습니다. 디버그 결과이 이미지가 손상되고 이후의 모든 Capybara 메서드는 시간이 초과되면 실패합니다. 링크를 사용하여이 페이지를 열고 Capybara의 handle_window 메서드로 Windows 컨텍스트 전환을 처리하면이 문제가 해결됩니다. 다른 웹 드라이버가 제대로 작동하는 것처럼 카피 바라 (Capybara wekit)에서만 일어나는 이유는 여전히 수수께끼입니다. 아마도 DOM이 다르게 구성되어있을 수도 있습니다.