WinAppDriver找不到Inspect可以找到的元素

时间:2019-07-29 20:37:24

标签: c# selenium ui-automation winappdriver

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

请让我知道我是否可以分享更多信息以帮助您。

2 个答案:

答案 0 :(得分:0)

您可以尝试这个。...

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);

答案 1 :(得分:0)

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