如何找到一个元素,然后在selenium中找到另一个元素?

时间:2017-10-29 12:59:51

标签: c# selenium

我无法在selenium c sharp中实现双重查找元素。我只有一个if语句,根据条件,我从第一个篮子摘要中选择第一个基本值,否则我从第二个篮子摘要中选择第一个基本值。

下面的代码无法识别basevalue [0],因为错误说明:iweb元素不包含' basePrice'的定义。没有扩展方法&base;基本价格' accedpt第一个类型' IWebElement'可以找到。我错过了参考。

我想如何实施以下代码来满足我想要涵盖的内容?

var basketSummary = _driver.FindElements(CommonPageElements.BasketSummaryContent);
var basePrice = _driver.FindElements(CommonPageElements.BasePriceValue);

    if (basketLocation.ToLower() == "top")
    {

        decimal basketSummaryPrice = decimal.Parse(basketSummary[0].basePrice[0].Text, NumberStyles.Currency, _ci);


        return basketSummaryPrice;
    }
    else
    {

        decimal basketSummaryPrice = decimal.Parse(basketSummary[1].basePrice[0].Text, NumberStyles.Currency, _ci);


        return basketSummaryPrice;
    }

1 个答案:

答案 0 :(得分:1)

我认为您可能对您的错误有轻微的误解,这不是引用的问题。问题是,当您basketSummary[0]执行IWebElement类型的对象时,此类型没有名为basePrice的属性或函数。在这种情况下,basePrice是'IWebElemet'

的单独集合

我认为您要做的就是在FindElements(CommonPageElements.BasePriceValue)上致电basketSummary[0]

我没有IDE方便,所以我不能保证100%准确的代码,但尝试这样的事情:

var basketSummary = _driver.FindElements(CommonPageElements.BasketSummaryContent);

if (basketLocation.ToLower() == "top")
{

    decimal basketSummaryPrice = decimal.Parse(basketSummary[0].FindElements(CommonPageElements.BasePriceValue)[0].Text, NumberStyles.Currency, _ci);


    return basketSummaryPrice;
}
else
{

    decimal basketSummaryPrice = decimal.Parse(basketSummary[1].FindElements(CommonPageElements.BasePriceValue)[0].Text, NumberStyles.Currency, _ci);


    return basketSummaryPrice;
}

您会注意到线条的细微差别:

decimal basketSummaryPrice = decimal.Parse(basketSummary[0].FindElements(CommonPageElements.BasePriceValue)[0].Text, NumberStyles.Currency, _ci);

decimal basketSummaryPrice = decimal.Parse(basketSummary[1].FindElements(CommonPageElements.BasePriceValue)[0].Text, NumberStyles.Currency, _ci);

我还删除了声明var basePrice的行,因为它不需要。