document.querySelector con AppleScript / Safari

1

Ho bisogno di uno script per aprire ogni scheda in Safari quando ottengo "valueIneed" da un sito Web interno

qui c'è il tag HTML

<td class="orderDetails">


    <p class="details">
        (My Certificate)
    </p>

ecco cosa ho provato, ma questo non funziona

tell application "Safari"
    do JavaScript "
        var forgiveStatus = document.querySelector('class[details\"(My Certificate).innerHTML;
        " in current tab of first window
    set checkvalue to (do JavaScript "theStatus;" in current tab of first window) as string
end tell

per ulteriori informazioni è possibile avere più istanze dello stesso tag, e ho bisogno di aprirli in una nuova scheda, o ancora meglio fare clic su di essi uno dopo l'altro

    
posta Kevin 12.10.2018 - 11:43
fonte

2 risposte

1

Non hai chiuso virgolette o virgolette. Hai bisogno dei seguenti quattro caratteri.

var theStatus = document.querySelector('class[details="(valueIneed)"]')
                                                                   ^^^^

Questo è ora JavaScript sintatticamente corretto. Dubito ancora che farà ciò di cui hai bisogno, ma senza vedere il DOM della pagina su cui stai lavorando e una descrizione completa del problema che non posso dire con certezza.

Dato l'aggiornamento alla tua domanda con uno snippet di codice HTML, il codice che stai cercando non funzionerà. Per ottenere il codice HTML interno dell'elemento, utilizzare il seguente codice JavaScript:

document.querySelector("td.orderDetails .details").innerHTML;
    
risposta data 12.10.2018 - 11:47
fonte
1
property tmp : "~/Desktop/safarihtml.html"

set htmls to {}

tell application "Safari" to tell window 1 to if exists then ¬
    set htmls to do JavaScript ¬
        "Array.from(document" & ¬
        "          .getElementsByClassName('details'))" & ¬
        "     .map(x=>x.innerHTML);" in current tab

repeat with html in htmls
    newTabWithHTML(html)
end repeat

on newTabWithHTML(html)
    local html

    set furl to URL of tmpfile()

    set eof of (tmpfile() as alias) to 0
    write html to (tmpfile() as alias) as «class utf8»

    tell application "Safari" to tell ¬
        (a reference to window 1)
        if not (exists) then make new document

        set current tab to make new ¬
            tab with properties ¬
            {URL:furl}

        repeat until name of current tab ¬
            ≠ "Untitled"
            delay 1
        end repeat
    end tell

    delete tmpfile()
end newTabWithHTML


on tmpfile()
    tell application "System Events"
        set f to a reference to the file tmp
        if not (exists f) then (make new file ¬
            with properties {name:tmp})

        return f
    end tell
end tmpfile
    
risposta data 12.10.2018 - 13:40
fonte

Leggi altre domande sui tag