результат "пропущенного значения" при автоматизации скрипта appleclick - PullRequest
0 голосов
/ 25 июня 2018

Хотя я уже опубликовал похожий вопрос, на который были даны хорошие ответы, я до сих пор не понимаю, почему происходит эта ошибка и как ее исправить.Вот мой код ...

to ClickNameClass(theClass, elementnum)
    tell application "Google Chrome"
    open location "https://www.google.com"
        tell active tab of front window
            execute javascript "document.getElementsByClassName(' " & theClass & " ')[' " & elementnum & " '].click();"
        end tell
    end tell
end ClickNameClass

Это синтаксис автоматического нажатия кнопки, и если да, то почему возникает ошибка?Любая помощь приветствуется .....

1 Ответ

0 голосов
/ 26 июня 2018

Просто для полноты я добавляю ответ ...

Как и Ваш другой вопрос , код execute javascript ... искажен, имеет пробелы , где они не принадлежат className, а также одинарные кавычки вокруг indexValue, которых там быть не должно.

Следующее clickElementByClassNameОбработчик , который был переписан с того, что вы первоначально опубликовали, откроет целевой адрес , в этом случае "https://www.google.com", дождется загрузки страницы и затем нажмитекнопка Вход в систему на домашней странице Google .

on clickElementByClassName(thisURL, className, indexValue)
    tell application "Google Chrome"
        open location thisURL
        repeat until (loading of active tab of front window is false)
            delay 0.1
        end repeat
        tell active tab of front window
            execute javascript "document.getElementsByClassName('" & className & "')[" & indexValue & "].click();"
        end tell
    end tell
end clickElementByClassName


clickElementByClassName("https://www.google.com", "gb_7f gb_Fa gb_Jb", 0)

Если посмотреть на панель «Ответы» в редакторе сценариев, она показывает:

tell application "Google Chrome"
    open location "https://www.google.com"
    get loading of active tab of window 1
        --> true
    get loading of active tab of window 1
        --> true
    get loading of active tab of window 1
        --> true
    get loading of active tab of window 1
        --> false
    execute active tab of window 1 javascript "document.getElementsByClassName('gb_7f gb_Fa gb_Jb')[0].click();"
        --> missing value
end tell

Result:
missing value

Как видите, строка execute с кодом , код не обрабатывается до тех пор, пока не завершится загрузка страницы, и на каждой стороне className или сингла нет пробелов .-квотами вокруг indexValue, как если бы использовалось оригинальное кодирование.

Я также убрал жесткое кодирование URL из обработчика , что делает его немного более универсальным и пригодным для повторного использования.

Как вы можете видеть, результатом было missing value, и в этом случае это не так уж плохо, как втестирование Меня перенаправили на страницу Вход - учетные записи Google , как требуется в этом примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...