Selenium C#:如何从input元素中提取值

时间:2015-06-23 18:45:50

标签: c# selenium selenium-webdriver

我想从AGX9单声道定价字段中提取3745的值,以便将其添加到DataTable中。但是input.Text是空的,我在这个页面的HTML中看不到3745的实际值。

enter image description here

以下是此输入元素的HTML:

<td class="monaural" ng-class="{'has-error' : vm.pricingForm[i].$invalid && vm.pricingForm[i].$dirty}" ng-init="i = ha + 'Monaural'">
    <span class="caption caption-currency">$</span>
    <input class="form-control price-control ng-pristine ng-valid ng-valid-required ng-valid-pattern ng-touched" type="text" required="" ng-pattern="/^[0-9]{3,5}(\.[0-9]{2})?$/" ng-model="vm.data[2][i].value" name="agx9Monaural">
</td>

以下是我用来尝试将标签,单声道和双耳价格添加到DataTable的代码。

        foreach (IWebElement row in rows)
        {
            var inputFields = row.FindElements(By.TagName("input"));

            //monoaural add to dataTableRow
            dr[1] = inputFields[0].Text;

            //binaural add to dataTableRow
            dr[2] = inputFields[1].Text;

            actualDataTable.Rows.Add(dr);
        }

1 个答案:

答案 0 :(得分:4)

您需要获取value属性

string value = Driver.FindElement(By.Name("agx9Monaural")).GetAttribute("value");

应该这样做

在你的情况下,它将是

foreach (IWebElement row in rows)
{
    var inputFields = row.FindElements(By.TagName("input"));

    //monoaural add to dataTableRow
    dr[1] = inputFields[0].GetAttribute("value");

    //binaural add to dataTableRow
    dr[2] = inputFields[1].GetAttribute("value");

    actualDataTable.Rows.Add(dr);
}