2013-04-16 13 views
15

Poniżej znajduje się kod html ..obsługę iframe z kapibary rubin

<iframe id="I0_1366100881331" frameborder="0" width="100%"> 
<div class="ZRa"> 
<span id="button" class="hAa Qo Bg" tabindex="0" role="button" title="" aria-  label="Click here to publicly +1 this." aria-pressed="false"> 
</div> 
</iframe>  

W powyższym scenariuszu, chcę, aby przełączyć się do (iframe id = „I0_1366100881331”) IFRAME, aby wykonać pewne działania na obecnym SPAN w tym IFRAME. Próbowałem z większości przypadków, ale bez rezultatu: (... ktoś pomóż

Chcę rozwiązanie dla ogórka używając tylko capybara rubin ..

. Uwaga: Próbowałem z następującego kodu, ale nie . wynik

page.driver.browser.switch_to.frame "I0_1366100881331"

+0

Możliwy duplikat: http://stackoverflow.com/questions/11909149/how-can-i-switch-between-two-frames-with-capybara –

Odpowiedz

11

Myślę, że można spróbować użyć metody:

within_frame 'id' do 
    <code for dealing with iframe entries> 
end 
+1

'id' nie jest statyczny. Zmienia się za każdym razem (odświeżanie strony), a następnie w jaki sposób możemy obsłużyć element iframe za pomocą "id". Czy możesz zaproponować? –

+0

Stary post, ale musisz mieć możliwość uzyskania identyfikatora ramki w jakiś sposób, biorąc pod uwagę przykładowy kod, który napisałeś powyżej. – Hannele

25
within_frame(find('<css rule>')) do 
    <code for dealing with iframe entries> 
end 
+0

To działało dobrze dla mnie, a ponieważ używa "find", Capybara będzie czekał, aż ramka pojawi się na stronie, jeśli to konieczne. – user01380121

0

można mieć ten kod:

withinframe((:xpath,"//div")) do 
#code 
end 
+0

Proszę wyjaśnij swój kod – quinz