@frendri

Как в pywinauto захватить окно по названию из переменной?

Вот есть у меня код, который запускает программу, название окна является логином пользователя. Ниже пример:
app = Application().start("C:\тута\sdaforpython1\Steam Desktop Authenticator.exe")
time.sleep(10)
app.SteamDesktopAuthenticator.set_focus()
app.SteamDesktopAuthenticator.ViewConfirmations.click()
time.sleep(30)
app.Trade_Confirmations_simple.set_focus()
app.Trade_Confirmations_simple.maximize()
time.sleep(4)
app.Trade_Confirmations_simple.set_focus()
pyautogui.click(140, 114)
time.sleep(4)
app.Trade_Confirmations_simple.set_focus()
pyautogui.click(1747, 1008)
app.SteamDesktopAuthenticator.close()

Окно называется Trade_Confirmations_simple. У меня встал вопрос. Мой логин simple. Сейчас пишу программу, она спрашивает у пользователя логин, после нужно открывать эту программу. Допустим у пользователя логин - good. Попробовал вместе своего логина подставить переменную:
from pywinauto import Application
import pyautogui
import time

login = 'Trade Confirmations - good'

app = Application().start("C:\тута\sdaforpython1\Steam Desktop Authenticator.exe")
time.sleep(2)
app.SteamDesktopAuthenticator.set_focus()
app.SteamDesktopAuthenticator.ViewConfirmations.click()
time.sleep(2)
app.login.set_focus()
app.login.maximize()
time.sleep(4)
app.login.set_focus()
pyautogui.click(140, 114)
time.sleep(4)
app.login.set_focus()
pyautogui.click(1747, 1008)
app.SteamDesktopAuthenticator.close()

Но скрипт не может найти такого окна. Надеюсь кто-то сталкивался с подобным
  • Вопрос задан
  • 1614 просмотров
Пригласить эксперта
Ответы на вопрос 1
vasily-v-ryabov
@vasily-v-ryabov
Python, UI Automation, pywinauto
app.login эквивалентен app.window(best_match="login"), то есть при взятии атрибута "login" - это строка, а не переменная. Нужно использовать доступ по ключу:
app[login].set_focus() # или
app.window(best_match=login).set_focus()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы