我正在传递动态变量(元素列表)并循环遍历该项目。当我试图与项目互动时出现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
而不是传入它吗?
答案 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);
}