как исправить Не могу превратить "Переменную" в тип integer - PullRequest
0 голосов
/ 11 ноября 2019

Я пытаюсь создать скрипт для автоматического открытия сафари, затем войти в свою учетную запись оттуда, но когда я сообщаю системным событиям о нажатии моей переменной входа в систему, я получаю сообщение об ошибке

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

open location "https://www.edutyping.com/student/login"
set LoginUSER to "Placeholder"
tell "System Events"
    keystroke LoginUSER
end tell

1 Ответ

0 голосов
/ 11 ноября 2019

Ваша команда tell нацелена на строку (текст) "System Events". Строка не может делать очень много, кроме как быть строкой, и она определенно не знает, как отправлять нажатия клавиш. Однако вы можете использовать эту строку с спецификатором объекта , таким как application, который будет указывать AppleScript на конкретный объект определенного типа (например, application) сконкретное имя (строка), которое - при условии, что объект существует, и т. д. - вы можете tell делать всевозможные вещи:

set LoginUSER to "Placeholder"
open location "https://www.edutyping.com/student/login"

tell application "System Events" --> Ahhh....!
    keystroke LoginUSER
end tell

Здесь, application "System Events" (что также может бытьзаписанный как the application named "System Events") направляет AppleScript к приложению на вашем компьютере с именем «Системные события». Поскольку AppleScript, к счастью, хорошо знаком практически со всеми приложениями на вашей машине и знает все их имена, это имеет гораздо больший смысл, когда вы хотите tell сделать что-то. Если все, что вы говорите, это то, что он понимает, он - по большей части - пойдет и сделает это.

Сейчас ... Очевидно , если вы отправили me по электронной почте с командой Я делаю следующее:

open location "https://www.edutyping.com/student/login"
keystroke "<your name and password>"

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

AppleScript, однако, вероятно, не поймет, что вы захотите, чтобы он дождался загрузки страницы, поэтому он просто начнет печатать то, что вы ему говорите. (Да, и, кстати, AppleScript действительно чертовски быстр при наборе . Я могу составить в среднем 120-140 слов в минуту в хороший день. AppleScript, вероятно, может делать 140 слов в секунду.)

Итак, если AppleScript сделал первый бит, а не все остальное, то, на самом деле, он сделал все без промедления. Но вы можете заставить его ждать несколько секунд с помощью команды delay:

set LoginUSER to "Placeholder"
open location "https://www.edutyping.com/student/login"
delay 7.18340739
tell application "System Events" to keystroke LoginUSER

Я не знаю, сколько времени займет загрузка этой веб-страницы в вашей системе, поэтому вы можете изменить это число наpi или что угодно. Существуют несколько лучшие способы заставить AppleScript распределять время этих двух команд вместо фиксированного delay (который просто угадывает, сколько времени может занять страница для загрузки), но это для другогодень.

...