[RUBY-ON-RAILS] 카피 바라와 함께, 어떻게 "_blank"목표와의 연계에 대한 새로운 창으로 전환합니까?
RUBY-ON-RAILS카피 바라와 함께, 어떻게 "_blank"목표와의 연계에 대한 새로운 창으로 전환합니까?
아마도 이것은 실제로 내가 겪고있어 문제가되지 않습니다, 그러나 I "click_link"타겟 링크 = "_ 빈은"세션이 현재 창에 초점을 유지하는 경우 것 같다.
나도 새로운 창으로 전환, 또는 _blank 속성을 무시할 수 있기를 원하는 그래서 - 기본적으로, 난 그냥 확인이 오른쪽 페이지의 할 수 있도록 페이지가 링크로 표시에 실제로 가고 싶어.
나는 웹킷과 셀레늄 드라이버를 사용합니다.
나는 지금까지 아래에있는 내 결과를 제출했다. 더 철저한 대답은 많이 감사합니다.
웹킷 드라이버에 해당하는 (또는 내가 나 자신을 발견 할 수있는 곳을 가리키는) 많이 주시면 감사하겠습니다 - 또한, 이것은 단지 셀레늄와 함께 작동합니다.
해결법
-
==============================
1.카피 바라가> = 2.3은 새로운 윈도우 관리 API가 포함되어 있습니다. 그것은처럼 사용할 수 있습니다 :
카피 바라가> = 2.3은 새로운 윈도우 관리 API가 포함되어 있습니다. 그것은처럼 사용할 수 있습니다 :
new_window = window_opened_by { click_link 'Something' } within_window new_window do # code end
-
==============================
2.이 솔루션은 셀레늄 드라이버 작동
이 솔루션은 셀레늄 드라이버 작동
열려있는 모든 창은 셀레늄의 매장입니다
response.driver.browser.window_handles
어떤 배열 될 것으로 보인다. 마지막 항목은 항상 가장 최근에 당신이 그것을로 전환하려면 다음을 수행 할 수 있습니다 의미 열린 창이다.
블록 내 :
new_window=page.driver.browser.window_handles.last page.within_window new_window do #code end
간단하게 현재 세션에 집중할 :
session.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
카피 바라의 문제 페이지에서 참조 : https://github.com/jnicklas/capybara/issues/173
셀레늄의 창 전환 기능에 대한 자세한 내용은 다음과 같습니다 http://qastuffs.blogspot.com/2010/10/testing-pop-up-windows-using-selenium.html
-
==============================
3.이것은 지금 심령과 협력하고있다. window_handles가 아직 구현되지는 않지만 (당신은 창 이름, 즉를 통해 자바 스크립트 팝업 필요) :
이것은 지금 심령과 협력하고있다. window_handles가 아직 구현되지는 않지만 (당신은 창 이름, 즉를 통해 자바 스크립트 팝업 필요) :
within_window 'other_window' do current_url.should match /example.com/ end
편집 : 버전 1.4.0 이후, 심령 지금 구현의 window_handles 아래 당 주석.
-
==============================
4.카피 바라 창문을 발견하고 전환 쉽게하기 위해 몇 가지 방법을 제공합니다 :
카피 바라 창문을 발견하고 전환 쉽게하기 위해 몇 가지 방법을 제공합니다 :
facebook_window = window_opened_by do click_button 'Like' end within_window facebook_window do find('#login_email').set('a@example.com') find('#login_password').set('qwerty') click_button 'Submit' end
더 자세한 사항은 여기에 : 카피 바라 문서
-
==============================
5.나는 이것이 이전 게시물입니다 알지만, 카피 바라 2.4.4에서 무엇을 그 가치에 대한
나는 이것이 이전 게시물입니다 알지만, 카피 바라 2.4.4에서 무엇을 그 가치에 대한
within_window(switch_to_window(windows.last)) do # in my case assert redirected url from a prior click action expect(current_url).to eq(redirect['url']) end
-
==============================
6.그것은 같아 지금 카피 바라 - 웹킷 불가능 : https://github.com/thoughtbot/capybara-webkit/issues/271
그것은 같아 지금 카피 바라 - 웹킷 불가능 : https://github.com/thoughtbot/capybara-webkit/issues/271
:-(
동시에 https://github.com/thoughtbot/capybara-webkit/issues/129는 within_window으로 창을 전환 할 수 있습니다 주장한다.
또한 https://github.com/thoughtbot/capybara-webkit/issues/47는 page.driver.browser.switch_to (). 창 (page.driver.browser.window_handles.last가) 작동을 시사한다. 잘 아, 코드 판독을합니다.
https://github.com/thoughtbot/capybara-webkit/blob/master/lib/capybara/webkit/browser.rb 최소한의 코드는 API가 webdriver에 대한 작품 / 파이어 폭스도 작동되는 점에하는 것이 좋습니다 일부 참조가 웹킷.
-
==============================
7.이제 within_window 삐 - 웹킷 http://github.com/thoughtbot/capybara-webkit/pull/314 구현하고 여기에 당신은 http://github.com/mhoran/capybara-webkit-demo 그것을 사용하는 방법을 볼 수 있습니다
이제 within_window 삐 - 웹킷 http://github.com/thoughtbot/capybara-webkit/pull/314 구현하고 여기에 당신은 http://github.com/mhoran/capybara-webkit-demo 그것을 사용하는 방법을 볼 수 있습니다
-
==============================
8.2014 년 5 월로서 다음의 코드는 카피 바라 - 웹킷에서 작동
2014 년 5 월로서 다음의 코드는 카피 바라 - 웹킷에서 작동
within_window(page.driver.browser.window_handles.last) do expect(current_url).to eq('http://www.example.com/') end
-
==============================
9.이 카피 바라 - 웹킷에 나를 위해 작동합니다 :
이 카피 바라 - 웹킷에 나를 위해 작동합니다 :
within_window(windows.last) do # code here end
(나는 카피 바라 2.4.1 및 카피 바라 - 웹킷 1.3.0을 사용하고 있습니다)
-
==============================
10.또한 윈도우의 이름, URL 또는 제목을 전달할 수 있습니다 (그러나 지금은이 dipricated)
또한 윈도우의 이름, URL 또는 제목을 전달할 수 있습니다 (그러나 지금은이 dipricated)
let(:product) { create :product } it 'tests' do visit products_path click_link(product.id) within_window(product_path(product)) do expect(page).to have_content(product.title) end end
당신은 람다 나 또한 PROC를 전달할 수 있습니다
within_window(->{ page.title == 'Page title' }) do click_button 'Submit' end
더 명확하게 이해하는 방법의 사용을 뻗어 바랍니다
-
==============================
11.명시 적으로 창을 변경하려면 switch_to_window를 사용
명시 적으로 창을 변경하려면 switch_to_window를 사용
def terms_of_use terms_window = window_opened_by do click_link(@terms_link) end switch_to_window(terms_window) end
그 방법 브라우저 후에는 within_window 블록 대신 랩의 모든 것을, 새 페이지에서 작동합니다
-
==============================
12.의 Gmail 창에서 링크를 열 때 나는이 문제를 가지고 있었다 :이처럼 고정 :
의 Gmail 창에서 링크를 열 때 나는이 문제를 가지고 있었다 :이처럼 고정 :
Given /^(?:|I )click the "([^"]*)" link in email message$/ do |field| # var alllinks = document.getElementsByTagName("a"); # for (alllinksi=0; alllinksi<alllinks.length; alllinksi++) { # alllinks[alllinksi].removeAttribute("target"); # } page.execute_script('var alllinks = document.getElementsByTagName("a"); for (alllinksi=0; alllinksi<alllinks.length; alllinksi++) { alllinks[alllinksi].removeAttribute("target"); }') within(:css, "div.msg") do click_link link_text end end
-
==============================
13.가장 좋은 아이디어는 업데이트 최신 버전 (2.4.1)에 카피 바라 그냥 사용하는 것입니다 windows.last page.driver.browser.window_handles가되지 않습니다 때문이다.
가장 좋은 아이디어는 업데이트 최신 버전 (2.4.1)에 카피 바라 그냥 사용하는 것입니다 windows.last page.driver.browser.window_handles가되지 않습니다 때문이다.
-
==============================
14.주요 구현 (window_opened_by은) 나를 위해 오류가 발생합니다 :
주요 구현 (window_opened_by은) 나를 위해 오류가 발생합니다 :
*** Capybara::WindowError Exception: block passed to #window_opened_by opened 0 windows instead of 1
그래서,이 솔루션으로이를 해결 :
new_window = open_new_window within_window new_window do visit(click_link 'Something') end page.driver.browser.window_handles # => ["CDwindow-F7EF6D3C12B68D6B6A3DFC69C2790718", "CDwindow-9A026DEC65C3C031AF7D2BA12F28ADC7"]
from https://stackoverflow.com/questions/7612038/with-capybara-how-do-i-switch-to-the-new-window-for-links-with-blank-targets by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 트위터 부트 스트랩 CSS와 충돌 활성 관리자 CSS를 레일 (0) | 2020.02.29 |
---|---|
[RUBY-ON-RAILS] 루비 : sqlite3를 :: BusyException : 데이터베이스가 잠겨 있습니다 : (0) | 2020.02.29 |
[RUBY-ON-RAILS] 레일 RSpec에 카피 바라 및 방법을 사용하여 정의 '방문' (0) | 2020.02.29 |
[RUBY-ON-RAILS] 사용 HTML5 데이터에 가장 좋은 방법은 레일 content_tag 도우미와 속성? (0) | 2020.02.29 |
[RUBY-ON-RAILS] has_many 협회의 개체 수 제한 (0) | 2020.02.29 |