2016-03-14 20 views
0

我正在嘗試自動化一個網頁。在那個網頁中,有多列的行和一些列中有文本框,而這樣做,我能夠填充第一個文本框的值,但不能填充其他文本框的值。他們只有共同的類名。我正在使用BDD和specflow來做這件事。下面是我使用的填充值到第一個文本框代碼:使用specflow C連續填充多個文本框#

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  | 

回答

0

一個可能的解決方案,可以讓每一個文本框的XPath的這您需要填寫,然後通過XPath定位元素並插入值。

那麼你的表可能看起來不浮華,但它會工作:

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

並與你的代碼,與XPath定位的元素。

這當然是,如果我正確地理解你的問題。如果我沒有,你的意思是:只有第一個領域得到填補,而你期待所有的領域被填補,嘗試一個「foreach」。

+1

場景中的Xpath不是一個好主意。要更好地使用[PageObject模式](http://martinfowler.com/bliki/PageObject.html)並將該數據封裝在頁面中。 –

+0

晚會晚了,但我同意PageObject模式。如果你真的想使它通用,你可以創建一個索引器,如'actuals_hours#2'。在你的代碼中,你需要檢索類「actual_hours」的對象集合並設置第三個對象。 – AutomatedChaos