【问题标题】:WinAppDriver doesn't find element Inspect can findWinAppDriver 找不到 Inspect 可以找到的元素
【发布时间】:2019-12-07 05:16:39
【问题描述】:

我正在尝试断言某个文本元素存在于我正在测试的 GUI 上。我可以使用 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。但是,我收到一个错误,即找不到该元素。

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

【问题讨论】:

    标签: c# selenium ui-automation winappdriver


    【解决方案1】:

    你可以试试这个....

    fyi - 你的 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);
    

    【讨论】:

    • 谢谢 Dazed,我会清理我的 XPath。然而,这种方法并不能解决我的问题。我想知道为什么 WinAppDriver 似乎无法使用 Inspect 工具找到我可以看到的元素。
    • 它在 iFrame 中吗?
    • 不是。我没有遇到任何使用 WinAppDriver 的 iframe。
    • 您可以添加您正在查看的 html 标记吗?
    • 我不确定如何使用 Microsoft Inspect 获取 HTML,但我可以添加我正在寻找的树视图的图像。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-28
      • 1970-01-01
      • 2020-02-13
      • 2020-08-11
      • 2018-02-10
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多