添加从Web驱动程序检索的值

时间:2015-10-01 23:12:16

标签: c# selenium-webdriver

我编写了一个Webdriver C#脚本,用于在页面上定位值并将这些值转换为双精度值。

我的验证测试涉及三个变量:totalPrice,tax和totalBilled。

我想验证totalPrice + tax将等于totalBilled amount。

以下是我目前的代码

       // Total Price Variables
        string totalPrice;
        string totalPriceTrm;
        double totalPriceDbl;

        // Tax Variables
        string tax;
        string taxTrm;
        double taxDbl;

        // Total Billed Variables
        string totalBilled;
        string totalBilledTrm;
        double totalBilledDbl;

        double totalBilledAmountToVerify;


        // Read in Total Price
        ReadOnlyCollection<IWebElement> aa = driver.FindElements(By.Id("total_price"));
        for (int k = 0; k < aa.Count; k++)
        {

            //Console.WriteLine("Order Number" + " " + ec[k].GetAttribute("value"));
            totalPrice = aa[k].GetAttribute("value");
            totalPriceTrm = totalPrice.Trim( new Char[] { ' ', 'A', 'U', 'D', '$'} );
            totalPriceDbl = Convert.ToDouble(totalPriceTrm);
        }

        // Read in Tax
        ReadOnlyCollection<IWebElement> bb = driver.FindElements(By.Id("gst"));
        for (int k = 0; k < bb.Count; k++)
        {

            //Console.WriteLine("Order Number" + " " + ec[k].GetAttribute("value"));
            tax = bb[k].GetAttribute("value");
            taxTrm = tax.Trim(new Char[] { ' ', 'A', 'U', 'D', '$' });
            taxDbl = Convert.ToDouble(taxTrm);
        }

        // Read in Total Billed
        ReadOnlyCollection<IWebElement> cc = driver.FindElements(By.Id("final_price"));
        for (int k = 0; k < cc.Count; k++)
        {

            //Console.WriteLine("Order Number" + " " + ec[k].GetAttribute("value"));
            totalBilled = cc[k].GetAttribute("value");
            totalBilledTrm = totalBilled.Trim(new Char[] { ' ', 'A', 'U', 'D', '$' });
            totalBilledDbl = Convert.ToDouble(totalBilledTrm);

        }

问题:我已声明了double totalBilledAmountToVerify,并希望它存储totalPriceDbl + taxDbl的结果。然后,我想将totalBilledDbl与totalBilledAmountToVerify进行比较(两者应该相等)。

但是,当我插入以下行时,我收到一条消息,告诉我totalPriceDbl和taxDbl未分配。我认为这些变量需要包含在范围内,但我不确定如何做到这一点。

totalBilledAmountToVerify = totalPriceDbl + taxDbl;

1 个答案:

答案 0 :(得分:0)

您可以为for循环内的变量赋值。循环中的代码可能永远不会执行(例如,如果for (int k = 0; k < aa.Count; k++)为0,则aa.Count内的代码将不会执行)。这就是为什么你得到的变量可能是未分配的错误。

要轻松修复它,请在声明变量时为变量指定一些值

double taxDbl = 0;
double totalBilledDbl = 0;

实际上你甚至不需要for循环。 FindElements(By.Id)应该只返回一个元素。如果没有,请尝试使用css选择器获得单个结果。