0

我正在使用检查工具和 WinAppDriver,但在应用程序内的其他元素中找不到元素。所有元素之间的唯一区别是屏幕上的坐标(这是每个按钮之间唯一的区别)。例如,我可以通过 X 位置中存在的名称 (FindElementByName) 找到元素吗?或其他想法?

肿瘤坏死因子

4

2 回答 2

0

如果按钮总是在同一个索引,你可以遍历它们并按索引查找。或者比循环更好,使用 FindElementsBy (注意 Elements 是复数)。

我对几个具有相同名称/accessibilityID 的盒子执行此操作:

public WindowsElement doStuff(WindowsDriver<WindowsElement> appSession, int index)
    {
        Elements = appSession.FindElementsByAccessibilityId("SpinnerTextBoxContent");

        return Elements[index];
    }

然后一个简单的调用

doStuff(appSession, 0);

得到我需要的东西。

于 2019-08-08T22:01:59.757 回答
0

您可以查看driver.PageSource元素是否可能具有一些其他属性来区分它们,这些属性可能通过 Inspect 不可见。如果是这样,您可以使用它driver.FindElementByXPath来查找正确的元素,例如

driver.FindElementByXPath("//button[@attributeOne='valueOne'][@attributeTwo='valueTwo']")

否则,正如您提到的,您知道位置存在差异,您还可以使用 xPath 来查询例如最左边的按钮:

driver.FindElementByXPath("//button[@x=min(//button[@name='theName']/@x)]")
于 2019-08-03T22:00:15.240 回答