Applescript riempie la classe di campi di testo cromati

0
<div class="content" contenteditable="true" data-placeholder="Search Cases" data-maxlength="" data-div-placeholder-content="true">mytexthere</div>

Non riesco a riempire il testo da questo campo di testo

ecco il mio script:

set textToSave to "Demo"
tell application "Google Chrome"
    tell tab 3 of window 1 to set theTextInfo to execute javascript "document.getElementsByClassName('search-field has-drop-down-menu component')[0].value=" & quoted form of textToSave
end tell

Non ho alcun errore su AppleScript ma nessun risultato su chrome ...

    
posta Kevin 05.05.2018 - 16:06
fonte

1 risposta

1

Analogamente alla tua domanda qui , il problema è che sei provare a fare riferimento a un elemento HTML con un nome class che non esiste.

Lo snippet HTML che hai fornito contiene un singolo elemento <div> , il cui attributo class ha il valore "content" . Il tuo JavaScript utilizza il metodo getElementsByClassName() con l'argomento 'search-field has-drop-down-menu component' , che sembra provenire dal nulla.

Pertanto, per spiegare brevemente il metodo getElementsByClassName() , è usato per cercare all'interno di una raccolta di elementi HTML per tutti gli elementi che hanno un attributo class con il valore specificato come argomento. Ad esempio, getElementsByClassName('foo') corrisponderà a <div class="foo">...</div> e <a class="foo bar">...</a> , ma sarà non corrisponde a <p class="foobar" id="foo" name="foo">...</p> .

Per sostituire mytexthere all'interno dell'elemento <div> , puoi utilizzare questo metodo con l'argomento "content" (il nome della classe dell'elemento <div> ); identificare il numero indice corretto se il metodo restituisce più di un articolo; quindi imposta la proprietà textContent sul valore desiderato:

    document.getElementsByClassName('content')[2].textContent='...';

dove [2] dovrebbe essere cambiato al numero di indice corretto dall'elenco di elementi restituiti da getElementsByClassName('content') .

Esistono altri metodi JavaScript che puoi utilizzare, come querySelector() , che per essere utile richiede la lettura dei selettori CSS . Ma, una volta acquisita familiarità con questi, puoi eseguire alcune query di elementi molto potenti.

    
risposta data 05.05.2018 - 20:10
fonte