Не удается открыть Microsoft Teams с помощью сценария python (3.8) любым методом - PullRequest
2 голосов
/ 20 июня 2020

Я пытаюсь создать сценарий для автоматизации входа в Microsoft Teams, и весь мой код работает, кроме той части, где необходимо открыть приложение. Странно то, что с его помощью можно открыть любое другое приложение, кроме MS Teams (Chrome, Блокнот, Firefox, Edge et c.)

Вот соответствующий код:

def openfile():
    if os.stat("stor.txt").st_size == 0:
        name = filedialog.askopenfilename()
        newfile = open("stor.txt", "w")
        newfile.write(name)

    else:
        name = (open("stor.txt", "r").read())
        os.startfile(name)
        sleep(5)
        keyboard.write(open("user.txt", "r").read())
        keyboard.press("enter")
        sleep(3)
        keyboard.write(open("pass.txt", "r").read())
        keyboard.press("enter")

Я пробовал это с os.startfile, os.system(start..) и любым другим методом в Интернете. Не работает.

Значение, которое я передаю в os.startfile(), когда пытаюсь запустить Teams, - C:/Users/Raghav/AppData/Local/Microsoft/Teams/Update.exe.

1 Ответ

3 голосов
/ 20 июня 2020

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

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

В любом случае запуск os.startfile("foo.exe") похож на двойной щелчок по foo.exe. Имя файла, которое вы передаете, - C:/Users/Raghav/AppData/Local/Microsoft/Teams/Update.exe, а Update.exe не похоже на то, что должно запускать мне Teams.

Просматривая ярлык Teams в моем собственном меню «Пуск», я вижу, что все немного сложнее. Этот ярлык запускает Update.exe и передает ему некоторые аргументы :

C:\...\Update.exe --processStart "Teams.exe"

Невозможно передать аргументы программе с os.startfile(). Попробуйте вместо этого os.system():

os.system('C:/Users/Raghav/AppData/Local/Microsoft/Teams/Update.exe --processStart "Teams.exe"')

Существует множество других способов для запуска внешних команд в Python, но это, вероятно, самый простой, поскольку вы не потоки вывода команд не нужны. Эта команда должна возвращать 0 в случае успеха и другое значение в случае неудачи.

...