2017-11-16 4 views
1

Ich teste mit Selenium WebDriver, RSpec und Capybara.Wie scrolle ich ein modales Fenster in Capybara

Ich habe das Programm erfolgreich einige Felder in einem modalen Fenster ausfüllen. Jetzt möchte ich auf eine Schaltfläche klicken, die sich am unteren Rand dieses modalen Fensters befindet. Auf den ersten Blick kann ich diesen Knopf nicht sehen, daher muss Capybara im modalen Fenster nach unten scrollen.

Die beiden entsprechenden Code-Schnipsel der Webseite:

<div class = “modal”> </div> 
    <button class=”btn …..”> TextOnButton ::after </button> 

Ich habe versucht:

within('.modal') do 
     find('.btn', text: ‘TextOnButton').scrollIntoView(true) 
end 

erhielt aber die Fehlermeldung.

kann nicht sichtbar css ".btn" mit dem Text "TextOnButton"

Ich habe versucht, finden:

within('.modal’) do 
     page.execute_script 'window.scrollBy(0,100)' 
end 

aber dann rollt er das Hauptfenster, aber nicht das modale Fenster.

+0

Was genau meinst du mit dem HTML-Code dort ?? Ist das Button-Element im '.modal' oder nicht, und was ist das' :: after' im Element ' '? –

+0

Vielen Dank Thomas, es funktioniert! Du hast Recht, es ist nur ein HTML/CSS-Popup. Entschuldigung für die mehrdeutige Formulierung. – Constanze

+0

Sie sind willkommen - vergessen Sie nicht, die Antwort (das Häkchen) zu akzeptieren –

Antwort

0

versuchen ich verstehe Sie ausführen bereits Code auf dem modal, aber fragen Sie sich, ob Sie driver.switchTo(). window (handle) benutzt haben, um zuerst zu diesem Modal zu wechseln?

+0

Es ist kein echtes System modal - es ist nur ein HTML/CSS-Popup –

0

Angenommen, Ihr HTML-Snippet falsch ist und das Button-Element ist tatsächlich im Modal (wie in Ihrer Textbeschreibung) enthalten ist, dann können Sie so etwas wie

within('.modal') do 
    btn = find(:button, 'TextOnButton', visible: :all) 
    execute_script('arguments[0].scrollIntoView(true)', btn) 
    btn.click 
end