FIndParent错误 - 无法导航到动态成员

时间:2016-05-31 13:51:04

标签: c# selenium selenium-webdriver

我正在传递动态变量(元素列表)并循环遍历该项目。当我试图与项目互动时出现Cannot navigate to dynamic member的问题。

public void definePositions()
{ 
    var positions = PanelPositionsContent.FindElements(By.CssSelector("span[class='cell cell-id-symbol']"));            
    CheckEntryPrice(positions);
}


private void CheckEntryPrice(dynamic positions)
{
    foreach (var position in positions)
    {
        if (position.Text.ToLower().Equals(ScenarioContext.Current["symbol"].ToString().ToLower()))
        {
            CommonMethods.Log("Successfully: " + ScenarioContext.Current["symbol"]);
        }

        if (position.FindParent().FindElement(By.CssSelector("span[class='cell cell-id-price']")).Text.Equals(ScenarioContext.Current["price"]))
        {
            CommonMethods.Log("Failing test, : " + ScenarioContext.Current["price"] + ", actual price" +
                positions[0].FindParent().FindElement(By.CssSelector("span[class='cell cell-id-price']")).Text);
            Assert.Fail("Price is not correct");
        }

        CommonMethods.Log("Passed test, clicked price matches position price: expected price: " + ScenarioContext.Current["price"] + ", actual price: " +
                          positions[0].FindParent().FindElement(By.CssSelector("span[class='cell cell-id-price']")).Text);
    }//calaculate points from curr price to entry

    CheckGross();
}

可能是什么问题,我应该定义dynamic positions而不是传入它吗?

1 个答案:

答案 0 :(得分:0)

IWebElement没有名为FindParent()的方法。但是,如果您使用的是扩展方法,则断言您使用扩展名的命名空间;

如果您没有扩展方法,则需要以这种方式获取父级:

yourIWebElement.FindElement(By.XPath(".."))

或者您可以创建扩展方法:

public static IWebElement FindParent(this IWebElement e, int parentLevel = 1)
{
    return (e == null || parentLevel <= 0)
            ? e
            : e.FindElement(By.XPath("..")).FindParent(--parentLevel);
}