2015-09-03 9 views
20

Sto tentando di automatizzare un processo di accesso a un sito Web e di eseguire alcuni processi su di esso, utilizzando il pacchetto RSelenium. Sono stato in grado di accedere, fare clic sui pulsanti qui e là, ma sono bloccato a eseguire una funzione jQuery nella pagina. C'è una casella a discesa che popola i dati in esso utilizzando una funzione jQuery. Non sono sicuro di come eseguire questa funzione. La sorgente della pagina (compresa la funzione jQuery) è la seguente:Esegui la funzione jQuery utilizzando il pacchetto RSelenium

<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> 

Il nome del menu a discesa è stuff e sto utilizzando il seguente codice per accedervi:

library("RSelenium") 

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

quando cerco di eseguire il seguente comando:

wxChooseStuff$clickElement() 

ottengo il seguente errore:

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 

Speravo che il clic si compilasse automaticamente nel menu a discesa.

Qualsiasi suggerimento su come eseguire la funzione jQuery utilizzando RSelenium sarebbe molto apprezzato.

Anche se riesco a eseguire la funzione jQuery utilizzando un altro pacchetto, ciò andrà bene. Mi piacerebbe solo eseguire questa funzione e fare clic sull'elemento.

PS - Non sono uno sviluppatore web, quindi scusami se ti faccio una domanda stupida.

EDIT:

Ho provato il seguente codice come da suggerimento:

In questo comando, ho appena includono il testo completo racchiuso nel tag script, sostituendo tutte le virgolette (") con virgolette singole (')

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() 

ma ho ricevuto il follow Errore:

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 

Sembra che l'elemento non sia ancora stato trovato.

+0

E 'possibile dare il sito che ti interessa e questo è un po' più facile riprodurre? – Dason

+0

Lo sto effettivamente facendo su un sito Web di test interno, quindi pubblicare il link non sarà possibile, mi dispiace :( – Patthebug

+0

Questo potrebbe essere un inseguimento selvaggio, ma è possibile che ci siano due ID identici? mi ha causato mal di testa con il selenio prima, quando continuava a cercare di agire su un ID che era sotto un div e "non visibile", mentre stavo cercando di farlo fare clic su un elemento diverso che aveva lo stesso id. – Joy

risposta

0

ho idea che driver si sta utilizzando, ma con il driver Chrome per PHP si esegue questa operazione:

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