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.
E 'possibile dare il sito che ti interessa e questo è un po' più facile riprodurre? – Dason
Lo sto effettivamente facendo su un sito Web di test interno, quindi pubblicare il link non sarà possibile, mi dispiace :( – Patthebug
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