Ui automation 有没有办法从属性为IsControlElement=False的ui元素中检索信息?(Python+;Appium+;WinAppDriver)
问候和问候 我正在为windows桌面应用程序(FrameworkId:Win32)进行UI自动化项目 堆栈:Python(3.7)+Appium(1.15.1)+WinAppDriver(v1.1) 我已使用Inspect.exe识别了一个元素,但当我尝试编码时,无论我做什么,都会收到以下错误: selenium.common.exceptions.NoSuchElementException:Message:使用给定的搜索参数在页面上找不到元素。 我使用的定位器策略是xpath:Ui automation 有没有办法从属性为IsControlElement=False的ui元素中检索信息?(Python+;Appium+;WinAppDriver),ui-automation,python-appium,appium-desktop,winappdriver,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:Message:使用给定的搜索参数在页面上找不到元素。 我使用的定位器策略是xpath: self.
self.driver.通过xpath(“/*[@LocalizedControlType='text'和@IsControlElement='false'])查找元素
如您所见,Inspect.exe已显示它具有属性“IsControlElement='false'
”,但我终身无法通过代码“访问”它
我还想指出,任何具有IsControlElement='true'
的元素都可以正确找到,我可以与它们“交互”
非常感谢你的帮助 问题来源
这可能是Microsoft在.NET中的UI自动化实现中的一个问题。
属性IsControlElement
应该返回true
,但它没有返回
从我的测试来看,这似乎是UIAutomationCore.dll
中的一个问题
我推测,根本原因是自动化实现的目标是可访问性,他们错误地忽略了一些不可读的控件(Image
,Geometry
,等等)
某些情况下的变通方法
- 尝试从具有文本的类型使用UI控件
- 如果已经是文本控件,请尝试使用不同的文本控件类型。例如,在
WPF
项目中,使用Label
而不是TextBlock
- 如果它不是文本元素,如果可能,将控件包装在文本元素中。在
WPF
项目中,可以使用
作为包装器李>
其他需要考虑的事情
- 尝试使用
相关问题
旁注
因为您没有指定您使用的是什么,所以我无法为您的库提供示例。对不起。你好,伊索!谢谢你的回复!如果我没有弄错的话,所使用的Python GUI库是win32all。我使用pywinauto自动化了同样的事情,最后我使用了“某种xpath”方法,其中我使用了.child_窗口(criteria).children()[x].children()[y]并访问了需要与\read交互的元素。在Appium中有什么方法可以做吗?我的意思是我知道你可以使用驱动程序访问元素。通过xpath(“/*[@attribute='value']”)查找元素,但不完全确定从那里可以做什么。我还发现,如果你这样做:驱动程序。通过xpath(/*[@attribute='value']/*)查找元素
这会将您带到下一个具有IsControlElement=“True”
的节点,因此这是一个开始。