Pywinauto如何获取返回元素的列表

时间:2017-09-26 17:29:44

标签: python automation pywinauto

我正在使用具有自定义堆栈面板的WPF应用程序,它基本上是一个列表。列表中的项目完全相同,因此我无法选择特定文本来唯一标识元素。而其他一些价值观也是动态的。

有没有办法让我获得返回的元素列表。我知道这是可能的,因为抛出了错误,ElementAmbiguousError说明了计数。

如果我能做到这一点,那么从该列表中我可以使用索引并验证我需要的内容。

2 个答案:

答案 0 :(得分:1)

您可以将library(dendextend) pdf("Rplots.pdf", height=10, width=12) par(cex=0.4) clustering <- hclust(distance,method="ward.D2") group <- data.frame(cutree(clustering,k=2)) clustering <- as.dendrogram(clustering,hang=0.2) labels_colors(clustering) <- as.numeric(category) labels(clustering) <- category plot(clustering) ### Variable category is defined earlier in the code. 或其他索引添加到窗口规范对象中。这是消除搜索歧义的第一种方法。

还有方法found_index=0.children()以及其他参数,例如.descendants()control_type(我记得title应该有效),但有些窗口规范这些方法不支持params。

答案 1 :(得分:0)

elements = pywinauto.findwindows.find_elements(<args>)
len(elements)

<args>需要包含比使用Application().connect(process=<pid>).window().child_window(<args>)之类的内容更详细的信息,因为它没有关于您正在搜索的窗口的链中的信息。有关详细信息,请参阅the documentation on this method

另请注意,建议不建议直接使用此方法,因为它是低级API。

另一个解决方案(已由vasily提供)是解析当找到多个元素以隔离找到的数字时返回的错误。

除非pywinauto开发人员决定提供更高级别的API来访问找到的元素数量,否则您必须权衡低级API更改的风险以及解析错误消息的风险,这也可能会更改。我也有这个问题,并决定使用find_elements()