from pywinauto import application
app=application.Application()
app.connect(title_re = "| Zero Hedge", found_index = 0)
app.window_().SetFocus()
app.window_().TypeKeys('{F6}')
我有两个主要问题:
found_index完全控制了什么?因为每次我改变它的值,结果都会产生不同的结果。我如何决定它的价值以确保我获得我想要的东西,包含“|零对冲”的窗口?
代码有时会引发没有found_index的WindowAmbiguousError或者有很多不同的found_index值。但我很确定我只有一个标签包含“| Zero Hedge”的标签。为什么它总能检测到许多窗户?我该如何解决?
感谢您的帮助。 :)
答案 0 :(得分:0)
请尝试在top_level_only=True
来电中添加connect
(found_index=0
即可删除)。方法connect
仅在某种意义上连接到应用程序进程(使用窗口标题找到进程,而不是必需的顶级窗口)。但该流程只包含一个顶级窗口(默认情况下app.window_()
正在搜索顶级窗口,而connect
则不会)。
避免含糊不清的另一种选择:
Application().connect(title='your title', class_name='Chrome_WidgetWin_1')
found_index
不是消除歧义的唯一方法。我会说当其他标准不起作用时,它是最后的边界。
编辑:BTW,正如Roel所说,"a|b"
表示"a"
或"b"
。因此,在您的情况下,"| Zero Hedge"
表示"" (empty sting)
或"Zero Hedge"
。有很多看不见的顶级窗户,上面有空标题。请谨慎使用|
。
任何符号的正确正则表达式为.*
。点.
表示任何符号,而星号*
表示任意数量的重复。
您的情况应该如此:".*Zero Hedge"
。
答案 1 :(得分:0)
您找到多个窗口,因为您使用正则表达式来匹配窗口标题,并且您的正则表达式恰好匹配任何字符串。 | Zero Hedge
表示匹配" Zero Hedge"
或空字符串。
要解决此问题,您需要转义|
:
app.connect(title_re = r"\| Zero Hedge")