Используя Applescript и Javascript: получить идентификаторы флажков с веб-страницы, зациклиться, если конец соответствует строке, щелкните флажок - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь использовать applecript и javascript, чтобы установить все флажки на https://calendar.google.com/calendar/syncselect, чьи идентификаторы элементов заканчиваются соответствующим доменом.
Пример ElementID: "person@domain.com"

Это работает, когда вы знаете точный идентификатор и можете сначала его указать:

tell application "Safari"
    open location "https://calendar.google.com/calendar/syncselect"
    delay 3
    do JavaScript "
    document.getElementById('person@domain.com').click();
    " in document 1
end tell

Это повторная попытка зацикливания:

to goToWebPage(theWebPage)
    tell application "Safari"
        activate
        set URL of document 1 to theWebPage
    end tell
end goToWebPage

to clickID(theId) --creates a function that we can use over and over again instead of writing this code over and over again

    tell application "Safari" -- lets AppleScript know what program to controll

        do JavaScript "document.getElementById('" & theId & "').click();" in document 1 -- performs JavaScript code that clicks on the element of a specific id

    end tell -- tells Applescript you are done talking to Safari

end clickID -- lets AppleScript know we are done with the function

goToWebPage("https://calendar.google.com/calendar/syncselect")
clickID("person@domain.com")

на основе примера: http://www.cubemg.com/how-to-click-a-button-on-a-web-page-with-applescript/

В основном список синхронизируемых календарей изменится, поэтому я хотел бы создать массив / список всех идентификаторов флажков.Просмотрите их, если какой-либо из идентификаторов заканчивается на domain.com.щелкните по этому полю.

1 Ответ

1 голос
/ 20 сентября 2019

Нашел решение сегодня утром, спасибо за документацию здесь: https://developer.mozilla.org/en-US/docs/Web/API/NodeList

tell application "Safari"
    open location "https://calendar.google.com/calendar/syncselect"
    delay 3
    do JavaScript "

    var list = document.querySelectorAll('input[type=checkbox]');
    for (var checkbox of list) {
     checkbox.checked = true;
    };
    " in document 1

document 1
end tell
...