1

我正在尝试断言我正在测试的 GUI 上存在某个 Text 元素。我可以使用 Inspect 查看元素,但是在运行我的代码时,找不到该元素。有趣的是,我不能使用“监视光标”来选择元素,我只能从树中选择它。这是 Inspect 窗口的图像,显​​示了我试图断言的元素存在: Inspect Image

我试过断言 Parent 元素在那里,所以我知道我的 XPath 没问题。我尝试通过将 /* 附加到路径来查找所有孩子,这似乎返回 null。

这是我正在尝试的测试代码的一部分:

string xpath_ABLRegion_child = "//*/Custom[@ClassName=\"D3NodeOverview\"]/Text[9]"]";

var WinElem_ABLRegion_child = desktopSession.FindElementByAbsoluteXPath(xpath_ABLRegion_child);

Assert.IsTrue(desktopSession.FindElementByAbsoluteXPath(xpath_ABLRegion_child"]").Displayed);

Console.WriteLine($"Text of WinElem_ABLRegion_child is {WinElem_ABLRegion_child.Text}");

我希望测试通过,如图WinElem_ABLRegion_child所示。但是,我收到一个错误,即找不到该元素。

如果有更多信息可以分享以帮助您帮助我,请告诉我。

4

2 回答 2

0

我注意到您要查找的元素是另一个窗口的子元素。您是否偶然分配了父母所有权?(即所有者 = 这在实施中)。如果是这样,WinAppDriver 似乎对那段代码视而不见。见

于 2020-01-30T17:51:06.120 回答
0

你可以试试这个......

仅供参考 - 你的 xpath 将非常脆弱。你能把它减少一点吗?

使用 C# - 方法

        public static bool IsElementPresent_byXpath(string xpath)
    {
        bool result;
        try { result = Driver.FindElement(By.XPath(xpath)).Displayed; }
        catch (NoSuchElementException) { return false; }
        catch (StaleElementReferenceException) { return false; }
        return result;
    }

称呼

 bool ele = Browser.IsElementPresent_byXpath("your/long/xpath");
 Assert.IsTrue(ele);
于 2019-07-29T23:03:47.980 回答