有没有办法从具有IsControlElement = False属性的ui元素检索信息? (Python + Appium + WinAppDriver)

时间:2020-01-09 07:19:07

标签: ui-automation python-appium appium-desktop winappdriver

问候和称呼!

我正在为Windows桌面应用程序(FrameworkId:Win32)进行UI自动化项目。 堆栈:Python(3.7)+ Appium(1.15.1)+ WinAppDriver(v1.1)。

我已经使用Inspect.exe标识了一个元素,但是当我尝试编码时,无论如何我都会收到此错误: selenium.common.exceptions.NoSuchElementException:消息:使用给定的搜索参数无法在页面上找到元素。

我正在使用的定位器策略是xpath: self.driver.find_element_by_xpath("//*[@LocalizedControlType='text' and @IsControlElement='false']")

如您所见,Inspect.exe已经显示它具有属性“ IsControlElement='false'”,但是我一生无法通过代码“访问”它。

我还要指出,找到具有IsControlElement='true'的任何元素都是正确的,我可以与它们“进行交互”。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

问题来源

这可能是 在Microsoft .NET中的UI自动化实现中的一个问题。 属性IsControlElement应该返回了true,而没有返回。

根据我的测试,这似乎是UIAutomationCore.dll中某个地方的问题。

推测,根本原因是自动化实现的目标是考虑可访问性,并且他们错误地忽略了一些不可读的控件({{1 }},Image等。

某些情况下的解决方法

  • 尝试使用具有文本类型的UI控件。
  • 如果它已经是文本控件,请尝试使用不同文本控件类型。例如-在Geometry项目中-使用WPF代替Label
  • 如果不是文本元素,则将控件包装在文本元素中。在TextBlock项目中,您可以使用WPF作为包装器。

其他要考虑的事情

相关问题

旁注

由于您尚未指定使用which Python GUI library,因此我无法为您的图书馆提供示例。抱歉。