【问题标题】:Fill Multiple Textbox in a Row using specflow C#使用specflow C#在一行中填充多个文本框
【发布时间】:2016-03-14 22:15:37
【问题描述】:

我正在尝试自动化网页。在该网页中有多列的行,并且某些列中有文本框,这样做时我能够将值填充到第一个文本框,但无法填充其他文本框的值。他们只有共同的类名。我正在使用 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     |

【问题讨论】:

    标签: c# cucumber specflow


    【解决方案1】:

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

    那么你的桌子可能看起来不那么华而不实,但它会起作用:

    | xpath                | value |
    | //*[@id="wmd-input"] | 8     |
    (Just an example of the xpath)
    

    使用您的代码,通过 XPath 定位元素。

    当然,如果我正确理解了您的问题。如果我没有,而您的意思是:只有第一个字段被填写,而您期望所有字段都被填写,请尝试“foreach”。

    【讨论】:

    • 场景中的 Xpath 不是一个好主意。最好使用PageObject pattern 并将该数据封装在页面中。
    • 聚会有点晚了,但我同意 PageObject 模式。如果你真的想让它通用,你可以制作一个像actuals_hours#2 这样的索引器。在您的代码中,您需要检索具有类 actual_hours 的对象集合并设置第三个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多