2016-05-09 15 views
3

Ich reiche ein Login-Formular und versuchen, den HTML-Code anschließend mit Elixir/Hound zu erfassen. Nach dem Einreichen laufe ich page_source und bekomme nichts. Wenn ich eine Sekunde warte (bis die Seite fertig geladen ist), bekomme ich den HTML-Code zurück.Elixir Hound warten auf Seite zu laden

Gibt es eine Möglichkeit, Hound warten zu lassen, bis die Seite fertig geladen ist?

Ich mache zur Zeit: :timer.sleep(2000) als Arbeit um für eine bessere Art und Weise der Hoffnung:/

+0

Welchen Code verwenden Sie das Formular zu navigieren/Post erscheinen? –

+0

Ich navigiere zu meiner Login-Seite, füge Benutzernamen/Passwort hinzu und starte dann 'click ({: class," loginButton "})' – newUserNameHere

Antwort

1

Das ist, was ich tue:

eine Funktion erstellen, die alle 100 ms für eine Testbedingung wiederholt überprüft, in diesem Fall warte ich für bestimmten Text mithilfe visible_page_text

@tag timeout: 6000 
test "My Test" do 
    assert wait_for(fn -> Regex.match?(~r/Success/, visible_page_text()) end) 
end 

def wait_for(func) do 
    :timer.sleep(100) 
    case func.() do 
    true -> true 
    false -> wait_for(func) 
    end 
end