Просто для полноты я добавляю ответ ...
Как и Ваш другой вопрос , код 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 , как требуется в этом примере.