Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用specflow C在一行中填充多个文本框#_C#_Cucumber_Specflow - Fatal编程技术网

C# 使用specflow C在一行中填充多个文本框#

C# 使用specflow C在一行中填充多个文本框#,c#,cucumber,specflow,C#,Cucumber,Specflow,我正在尝试自动化一个网页。在该网页中有多个列的行,有些列中有文本框,在执行此操作时,我可以将值填充到第一个文本框,但无法填充其他文本框的值。它们只有共同的类名。我使用BDD和specflow来实现这一点。以下是我用于将值填充到第一个文本框中的代码: public void ThenIFilThesheet(TechTalk.SpecFlow.Table table) { foreach (var row in table.Rows) {

我正在尝试自动化一个网页。在该网页中有多个列的行,有些列中有文本框,在执行此操作时,我可以将值填充到第一个文本框,但无法填充其他文本框的值。它们只有共同的类名。我使用BDD和specflow来实现这一点。以下是我用于将值填充到第一个文本框中的代码:

 public void ThenIFilThesheet(TechTalk.SpecFlow.Table table)
    {
        foreach (var row in table.Rows)
        {
            var textarea = WebBrowser.Current.TextField(Find.ByClass(row["field"]));
            if (!textarea.Exists)
                Assert.Fail("Class not found ");
            textarea.TypeText(row["value"]);
        }
    }
以下是相同的功能文件:

Then I fil the sheet
| field         | value |
| actuals_hours | 8     |

一个可能的解决方案是获取需要填写的每个文本框的XPath,然后通过XPath定位元素并插入值

那么,您的桌子可能看起来不那么华丽,但它可以工作:

| xpath                | value |
| //*[@id="wmd-input"] | 8     |
(Just an example of the xpath)
在代码中,通过XPath定位元素


当然,如果我正确理解你的问题的话。如果我没有,您的意思是:当您希望填充所有字段时,只填充第一个字段,请尝试使用“foreach”。

Xpath在场景中不是一个好主意。使用并将数据封装在页面中要好得多。虽然有点晚了,但我同意PageObject模式。如果你真的想让它通用,你可以制作一个索引器,比如
actuals\u hours\2
。在代码中,您需要使用class
actual_hours
检索对象集合,并设置第三个。