Pywinauto:如何将焦点设置在数据框中的 window

Pywinauto: How to set focus on a window from a dataframe

我正在尝试自动化一些 windows 任务,我得到了所有 windows 打开的数据框,然后我添加了更多列以便在继续自动化之前进行一些验证.

然后我想遍历数据框中 WebBrowser 列中的所有数据,以便设置焦点并将此 windows 激活到前面,然后调整大小。

但是当我尝试以下命令时出现错误 app.set_focus()AttributeError: 'list' object has no attribute 'set_focus'.

注意:我还不知道如何调整大小,我之前停了一步,但如果有人能给我提示,我将不胜感激。

我的代码:

from pywinauto import Desktop
import pandas as pd

windows = Desktop(backend="uia").windows()
window = [w.window_text() for w in windows]

# Create a dataframe in order to store the windows needed
df_windows = pd.DataFrame(window, columns =['WebBrowser'])
# Filter dataframe only to show all windows from Brave web browser
df_windows = df_windows.loc[df_windows['WebBrowser'].str.contains("Brave:", case=False)]
# Add column profile from Brave
df_windows['Profile'] = df_windows['WebBrowser'].str.split(':').str[1].str.strip()
# Add column window open from Brave
df_windows['Window'] = df_windows['WebBrowser'].str.split(':').str[0].str.strip()
# Add column about the website open from Brave
df_windows['Website'] = df_windows['Window'].str.replace(" - Brave", "").str.strip()
# Filter dataframe only to show all bombcrypto game window
df_windows = df_windows.loc[df_windows['Website'] == 'GuilhermeMatheus']

print(df_windows)

for x in df_windows['WebBrowser']:
    print(x)
    app = Desktop(backend="uia").windows(title=x)
    app.set_focus()
    # resize window after

我运行你的代码后,我发现你的应用在app = Desktop(backend="uia").windows(title=x)是一个列表。所以需要获取list中的app元素,即app[0]。这是固定代码,它将 运行 正确。

for x in df_windows['WebBrowser']:
    #get first element in list
    app = Desktop(backend="uia").windows(title=x)[0]
    app.set_focus()

如果你想调整大小windows,你可以阅读文章here