AppleScript-JavaScript getElements

Ich habe mein Skript teilweise funktioniert. Ich verwende AppleScript, um Interaktionen mit Chrome zu skripten.

set textToSave to "Text"

tell application "Google Chrome"
    execute front window's tab 1 javascript "document.getElementsByName('0.9.7.1.5.0.4.1.3')[0].click();"
    delay 0.1
  1. Wenn ich zum Beispiel einen mehrzeiligen textToSave eingebe

    " here
    blabla 
    
    bla"
    

    dann habe ich keinen Text und --> fehlenden Wert

  2. Ich muss vor diesem Skript ein Popup-Feld setzen, hier ist der HTML-Code dafür

    <select id="PaymentEnSelection" name="0.9.7.1.5.9.4.1.9"> <option selected="selected" value="0">Enabled</option> <option value="1">Disabled</option></select>
    

    und noch eins:

    <select name="0.9.7.1.9.0.4.1.9.0.2.1.3.7.3.9.3.1"><option value="NoSelectionString">Please select a reason</option>
    <option value="0">R1</option>
    <option value="1">&amp; Review </option>
    <option value="2">Chart</option>
    <option value="3">R3</option>
    

Antworten (2)

Mehrzeiliger Text kann mit einer der folgenden Methoden erstellt werden:

  • Trennen Sie den Text durch neue Zeilen, wobei das erste Zitat und das letzte Zitat den Inhalt kapseln.

  • \nAls neue Zeile verwenden .

    set myvar to "hello\nanother\n\nfinal"
    

Sie können den Wert eines select-Elements mit dem folgenden JavaScript festlegen

document.getElementById("PaymentEnSelection").value = 1

Der angegebene Wert ist eines der Wertattribute der Optionselemente, die Sie auswählen möchten.

Die erste Methode ist die, die ich normalerweise verwende, aber in diesem Fall nicht arbeite, stattdessen \n ausprobiert, aber aus irgendeinem Grund das gleiche Problem. Es funktioniert nur, wenn ich eine Zeile (oder mehrere Zeilen manuell) für document.getElementById eingebe. Kann ich stattdessen meinen Namen machen? Ich habe Ihren Code trotzdem ausprobiert, habe aber einen Fehler, auch versucht, das JavaScript "document.getElementByName ('0.3.8.1.5.0.4.1.5.0.6.1.3.7.3.1.3.1'). value = 1" des vorderen Fensters auszuführen fehlender Wert
@Kevin Ja, Sie können jede Methode verwenden, die ein Element zurückgibt, daher funktioniert jede der 'getElement ...'-Methoden. Es gibt keine solche Methode 'getElementByName', Sie müssen 'getElementsByName' verwenden und das Array indizieren. Verwenden Sie die JS-Konsole in Chrome, um Ihr JS zu debuggen, bevor Sie das JS in AppleScript ausführen.

Ich finde es (für die zweite Frage)

execute front window's tab 1 javascript ¬
        "document.getElementsByName('namehere')[0].selectedIndex=1"

Der Wert für den ausgewählten Index ist der Wert, den Sie im Dropdown-Menü auswählen möchten.