我正在使用 WinAppDriver(使用 NUnit 和 C#)来测试一些旧的 win32 应用程序。
当我调试测试时,我到达了某些点,我需要查看所选元素的所有子元素的列表。这将使我能够构建测试的下一步。
我尝试过使用不同的 FindElementsXXX 方法,但没有找到任何可行的方法。似乎没有一个通配符搜索选项。
是否有适用于这种情况的 XPath 语法?我已经看到了几个“应该”工作的 XPath 片段,但我得到了不支持该模式的错误。
我正在使用 WinAppDriver(使用 NUnit 和 C#)来测试一些旧的 win32 应用程序。
当我调试测试时,我到达了某些点,我需要查看所选元素的所有子元素的列表。这将使我能够构建测试的下一步。
我尝试过使用不同的 FindElementsXXX 方法,但没有找到任何可行的方法。似乎没有一个通配符搜索选项。
是否有适用于这种情况的 XPath 语法?我已经看到了几个“应该”工作的 XPath 片段,但我得到了不支持该模式的错误。
XAML:
<ListBox x:Name="MyList">..</ListBox>
WinAppDriver 测试:
var listBox = testSession.FindElementByAccessibilityId("MyList");
var comboBoxItems = listBox.FindElementsByClassName("ListBoxItem");
var comboBoxItems = listBox.FindElementByXPath("//ListBoxItem"); // ok
在现实世界的场景中,我会使用这样的东西。但它也不适用于我:
var xPath = "//ListBox[@Name=\"MyList\"]//ListBoxItem[@IsSelected=\"True\"]";
listBox.FindElementByXPath(xPath); // => not working
listBox.FindElementByXPath("//ListBox"); // => empty?
listBox.FindElementByXPath("//ListView"); // => empty?
ComboBox 的子元素有点特殊。它们是在单击组合后创建的,我发现了一些未解决的问题。
为了调试,我使用了本视频和 VS 中的即时窗口中解释的 Inspect.exe 。该表 有助于发现:
是的,有一个 XPath 表达式。Givenx
是您的 XPath 元素的字符串,您需要附加/*
到它。示例:
/bookstore
is the element.../bookstore/*
选择其所有子元素。参考这里。
愚蠢的司机。我有 8 种模式不起作用。该错误表明该模式不受支持。
我遇到了这篇文章Web Driver Issue 51,它表明一些下载链接可能指向旧版本。是的!这就是问题所在。正确的下载链接(截至 2017 年 1 月 30 日为v0.7-beta)