2015-09-03 6 views
20

Ich versuche, einen Prozess der Anmeldung an einer Website zu automatisieren und einige Prozesse darauf auszuführen, wobei das RSelenium-Paket verwendet wird. Ich konnte mich anmelden, klicken Sie hier und dort auf Schaltflächen, aber ich bin stecken auf eine jQuery-Funktion auf der Seite auszuführen. Es gibt eine Dropdown-Box, die Daten mit einer jQuery-Funktion füllt. Ich bin mir nicht sicher, wie ich diese Funktion ausführen soll. Die Seite Quelle (einschließlich der jQuery-Funktion) ist wie folgt:Führen Sie die jQuery-Funktion mithilfe des RSelenium-Pakets aus

<input disabled="disabled" id="stuff" name="stuff" style="width:100%" type="text" /><script> 
    jQuery(function(){jQuery("#stuff").kendoDropDownList({"change":disableNext,"dataSource":{"transport":{"read":{"url":"/StuffInfo/GetStuff","data":filterStuff},"prefix":""},"serverFiltering":true,"filter":[],"schema":{"errors":"Errors"}},"autoBind":false,"optionLabel":"Select court...","cascadeFrom":"state"});}); 
</script> 
      <script> 

Der Name des Drop-Down ist stuff und ich bin mit dem folgenden Code für den Zugriff:

library("RSelenium") 

startServer() 
mybrowser <- remoteDriver() 
mybrowser$open() 
mybrowser$navigate("<URL>") 
wxChooseStuff <- mybrowser$findElement(using='id',"stuff") 

wenn ich versuche, Führen Sie den folgenden Befehl ein:

wxChooseStuff$clickElement() 

ich die folgende Fehlermeldung erhalten:

Error: Summary: ElementNotVisible 
    Detail: An element command could not be completed because the element is not visible on the page. 
    class: org.openqa.selenium.ElementNotVisibleException 

Ich hatte gehofft, dass der Klick Daten im Dropdown automatisch füllen würde.

Alle Hinweise zur Ausführung der jQuery-Funktion mit RSelenium würden sehr geschätzt werden.

Auch wenn ich die jQuery Funktion mit einem anderen Paket ausführen kann, wird das in Ordnung sein. Ich möchte diese Funktion einfach ausführen und auf das Element klicken.

PS - Ich bin kein Webentwickler, also verzeih mir, wenn ich eine dumme Frage stelle.

EDIT:

Ich habe versucht, den folgenden Code als pro-Vorschlag:

In diesem Befehl schließe ich nur den vollständigen Text in dem Tag script eingeschlossen und ersetzt alle doppelte Anführungszeichen (") mit einfachen Anführungszeichen (')

mybrowser$executeScript(script = "jQuery(function(){jQuery('#stuff').kendoDropDownList({'change':disableNext,'dataSource':{'transport':{'read':{'url':'/StuffInfo/GetStuff','data':filterStuff},'prefix':''},'serverFiltering':true,'filter':[],'schema':{'errors':'Errors'}},'autoBind':false,'optionLabel':'Select court...','cascadeFrom':'state'});});") 

wxChooseStuff <- mybrowser$findElement(using='id',"stuff") 
mybrowser$executeScript(script = "arguments[0].hidden = false;", 
         args = list(wxChooseStuff)) 
wxChooseStuff$clickElement() 

aber ich erhielt die Folge Fehler:

Error: Summary: ElementNotVisible 
    Detail: An element command could not be completed because the element is not visible on the page. 
    class: org.openqa.selenium.ElementNotVisibleException 

Sieht aus wie das Element immer noch nicht gefunden werden kann.

+0

Ist es möglich, die Website geben Sie interessiert sind, so ist das ein wenig leichter reproduzieren? – Dason

+0

Ich mache es tatsächlich auf einer internen Test-Website, so dass die Veröffentlichung nicht möglich sein wird, sorry :( – Patthebug

+0

Dies kann eine wilde Gans Chase sein, aber ist es möglich, dass es zwei IDs gibt, die identisch sind? hat mir schon mal Probleme mit Selen gemacht, als es versuchte, auf eine ID zu reagieren, die unter einem div stand und "nicht sichtbar" war, während ich versuchte, es auf ein anderes Element mit derselben ID zu klicken. – Joy

Antwort

0

Ich habe keine Ahnung, welche Treiber Sie verwenden, aber mit dem Chrom-Treiber für PHP Sie dies tun:

$javascript = array('script' => 'myfunction();', 'args' => array()); 
$var = $this->execute($javascript); 
Verwandte Themen