2

问候和问候!

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

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

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

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

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

非常感谢您的帮助!

4

1 回答 1

0

问题来源

可能是 Microsoft 在 .NET 中的 UI 自动化实现中的一个问题。该物业IsControlElement应该已经返回true,而它没有。

从我的测试来看,这似乎是UIAutomationCore.dll.

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

某些情况的解决方法

  • 尝试使用具有文本的类型的 UI 控件。
  • 如果它已经是文本控件,请尝试使用不同的文本控件类型。例如 - 在WPF项目中 - 使用Label而不是TextBlock
  • 如果它不是文本元素,如果可能,将控件包装在文本元素中。在WPF项目中,您可以使用 a<Label Padding="0">作为包装器。

其他需要考虑的事项

相关问题

边注

由于您尚未指定您使用的是哪个 Python GUI 库,因此我无法为您的库提供示例。对不起。

于 2020-01-15T14:59:29.727 回答