Appium无法使用XPath查找UI元素

时间:2019-06-14 12:13:54

标签: selenium selenium-webdriver xpath appium appium-desktop

我需要使用 xpath Appiums xpath-selector Windows桌面WPF应用程序中找到UI元素。

对于“简单”应用程序,它可以正常工作,但对于我的目标应用程序,则不能。

我的环境是:

操作系统:Windows 10
目标应用:x86 WPF
Appium Windows驱动程序:4.0.0.6 beta
Appium桌面应用程序:1.13.0
Selenium WebDriver:3.141.0

这是我正在尝试的:

一旦我通过Appium桌面应用程序启动了目标应用程序,它的会话窗口就会告诉我UI元素的xpath,例如(另请参见屏幕截图):

xpath:

"/Windows/ToolBar/Tab/TabItem[1]"

Appium会话窗口屏幕截图:

enter image description here

Microsofts inspect.exe屏幕截图:

enter image description here

现在接线的是:

如果我使用的是appium展示给我的xpath字符串,为了在此会话管理器本身中找到相应的UI元素(通过使用搜索功能并选择xpath-selector),它将找不到任何元素(请参见屏幕截图):

enter image description here

enter image description here

此外,如果我使用的是琐碎的xpath字符串,例如

"//*"

"/Window"

由于找不到任何元素而失败。

在此,与此相对的是工作适用于baretail.exe记事本应用程序的屏幕截图的相同步骤,即在此处我可以使用提供的xpath字符串正确找到相应的UI元素。

Appium会话Windows:

enter image description here

Microsofts inspect.exe:

enter image description here

Appium会话窗口中搜索UI元素-查询:

enter image description here

Appium会话窗口中搜索UI元素-结果:

enter image description here

最终,我需要在C#项目中使用此代码,为此,我正在使用以下代码,但得到的结果是相同的,即没有找到与我的xpath-string匹配的UI元素。 / p>

(到目前为止,我已经调试了Appium源,因此我已经知道使用xpath-selecotr的FindElement请求已成功提交,但是Appium服务器以找到的UI元素为空的结果集作为响应。)

AppiumOptions options = new AppiumOptions();

options.AddAdditionalCapability("app", "path/to/my/target/application");
options.AddAdditionalCapability("deviceName", "WindowsPC");
options.AddAdditionalCapability("platformName", "Windows");
options.AddAdditionalCapability("newCommandTimeout", "60000");

session = new WindowsDriver<WindowsElement>(new Uri(WindowsApplicationDriverUrl), options);

Assert.IsNotNull(session);

session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1.5);

string xpath = "/Window/MenuBar/MenuItem[2]"; // valid xpath to an UI-Element
var result = session.FindElementsByXPath(xpath); // successfully returns an empty collection

有人,有什么想法吗?请...

0 个答案:

没有答案