1 votos

AppleScript /JS document.getElementsByClassName

Hice un script para rellenar un libro de texto en una página web interna, pero los desarrolladores de mi empresa cambiaron el código por lo que mi código de abajo ya no funciona

tell application "Safari" to tell window id theWINID to do JavaScript "document.getElementsByClassName('text-entry')[0].value=" & quoted form of myCaseNote in tab 1

aquí está el código del campo de texto de la página

enter image description here

He intentado muchas cosas pero parece que no puedo cambiar el texto (en la imagen demo "texto que necesito pegar")

cualquier ayuda será muy apreciada

<div lobid="##" data="[object Object]" casenotedata="[object Object]" caseid="5sd4sd-sd55sd-5sds5-sds5-sdsd55s" class="css-bzgzwc"><div class="note-input css-1d9ma27" data-cy="note-input"><div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div></div><div class="note-toolbar css-o3el1q" data-cy="note-toolbar"><div class="buttons-container"><button class="add-note-button" type="button">Apply</button></div></div></div>
<div class="note-input css-1d9ma27" data-cy="note-input"><div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div></div>
<div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div>
<div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div>
<div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div>
<div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div>
<textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea>
<div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div>
<span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span>
<div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div>
<div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div>
<div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div>
<div class="note-input css-1d9ma27" data-cy="note-input"><div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div></div>
<div class="note-toolbar css-o3el1q" data-cy="note-toolbar"><div class="buttons-container"><button class="add-note-button" type="button">Apply</button></div></div>
<div lobid="iTunes" data="[object Object]" casenotedata="[object Object]" caseid="bf4ecda0-113e-11ec-944e-9bd3d18184e9" class="css-bzgzwc"><div class="note-input css-1d9ma27" data-cy="note-input"><div class="textarea-container"><div class="form-textarea-container css-9db1eh"><div class="form-textbox"><div class="form-textarea focused"><textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea></div><span id="form-textarea-123_label" class="form-textbox-label" aria-hidden="true">Note</span></div></div></div></div><div class="note-toolbar css-o3el1q" data-cy="note-toolbar"><div class="buttons-container"><button class="add-note-button" type="button">Apply</button></div></div></div>

esto funciona pero parece que form-textarea-123 está cambiando todo el tiempo (los dígitos)

tell application "Safari"
    do JavaScript "document.getElementById('form-textarea-123').value = 'demo'" in current tab of window 1

end tell

el código real

<textarea aria-invalid="false" id="form-textarea-123" name="note-input-224" aria-labelledby="form-textarea-123_label" aria-describedby=""></textarea>

Esto tampoco funciona:

do JavaScript "document.getElementById('form-textarea').innerText;" in current tab of window 1

1voto

user3439894 Puntos 5883

Aquí hay algunos ejemplo AppleScript código que le permitirán avanzar en el proceso de automatización de una solución completa:

Ejemplo AppleScript código :

tell application "Safari"
    tell its current tab of window 1

        set foo to do JavaScript "document.getElementsByClassName('form-textbox')[0].innerHTML;"

        set targetID to my getID(foo)

        do JavaScript "document.getElementById('" & targetID & "').value = 'demo';"

    end tell
end tell

--  ## Handler ##

to getID(foo)
    set curTID to AppleScript's text item delimiters
    set AppleScript's text item delimiters to " id="
    set foo to second text item of foo
    set AppleScript's text item delimiters to "\""
    set foo to second text item of foo
    set AppleScript's text item delimiters to curTID
    return foo
end getID

Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso del <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X