2016-08-05 6 views
3

Ich habe eine Seite mit JS-Funktionen (die per Mausklick aufgerufen werden) innerhalb <script> ... </script> Tags. Während ich getestet habe, hatte ich Probleme mit der .click-Methode, die nicht oft funktioniert. Daher entschied ich mich, diese Funktion einfach manuell aufzurufen. Ich habe jedoch keine Quelle im Internet gefunden, die das gelehrt hat.Wie führe ich eine Funktion auf einer Seite mit Capybara/Poltergeist?

Ich möchte vermeiden, klicken Sie auf die Links und rufen Sie einfach doSumbit('5'). Vielen Dank!

Die JS-Funktionen sind:

<script language="javascript"> 
function doSubmit(infoTypeId) { 
    document.forms[1].INFOTYPEID.value = infoTypeId; 
    document.forms[1].action = document.forms[1].action + "#" + infoTypeId; 
    document.forms[1].submit(); 
    document.forms[0].INFOTYPEID.value = infoTypeId; 
    document.forms[0].submit(); 
} 
function doSubmitOne(infoTypeId) { 
    document.forms[0].INFOTYPEID.value = infoTypeId; 
    document.forms[0].submit(); 
} 
</script> 

und die On-Klick-Links sind:

<a href="javascript:doSubmit('11')" >Engine News<br></A> 
<a href="javascript:doSubmit('5')" >Parts Identification<br></A> 
+0

Aufruf der Funktion direkt von Aufrufen der Klick nicht anders. Es muss etwas anderes geben, das dieses Problem verursacht. Außerdem glaube ich dir nicht, dass du keine Quelle im Internet gefunden hast, die das gelehrt hat. "*. Dies ist eine ziemlich häufige Aufgabe, also sollten Sie Ihre Suchfähigkeiten verbessern und zusätzlich anfangen, die API zu lesen, weil es nicht sehr lang ist. –

Antwort

8

Sie mit beliebigen JS ausführen können execute_script

page.execute_script("doSubmit('5')") 

wenn Sie eine Rückkehr erwarten Wert Verwendung evaluate_script - es ist alles hier dokumentiert - http://www.rubydoc.info/gems/capybara/Capybara/Session#evaluate_script-instance_method

Natürlich, wenn Sie tatsächlich eine App testen, wäre es viel besser herauszufinden, warum Click für Sie nicht funktioniert, und das zu beheben, da Sie JS-Funktionen nicht gerade testen App funktioniert.

EDIT: Tippfehler doSubit zu doSubmit geändert

Verwandte Themen