2013-07-22 58 views
0

我正在做的項目有點像bot,我抓住了我的應用程序的進程(它的某些自動化測試),然後在應用程序中添加值和編輯值並查看輸出是否如預期的那樣。在一個表單元格中設置ComboBox值C#

那麼,我已經得到了應用程序窗口(稱爲窗口),我正在尋找一個已添加到另一個應用程序的DataGridView項目。我知道它叫做「dataGridView1」,並且我使用的UI界面(SpecFlow和White.Core)不支持從另一個應用程序中獲取DataGridView項目。

作爲解決方法,我將DataGridView項目作爲表格。 現在,這個問題。我試圖在數據網格視圖中設置一個單元格值,其中該單元格 包含一個ComboBox,該表格不支持選擇。每次我執行Cell.SetValue(字符串)將設置值暫時,直到我在我的UI導航離開

所以基本上,我的問題是,有沒有我可以設置一個表格單元格的值,任何方式那應該是一個包含組合框的DataGridView單元?我已經在代碼中增加了一些意見,因爲我想發生

public void InsertValues(String price, String name) 
    { 

    //actually is the following 
    //DataGridView Data = window.Get<DataGridView>("dataGridView1"); 
    //but this is not supported by the White.Core.UIItems. 

     Table Data = window.Get<Table>("dataGridView1"); 
     int numRows = 0; 
     foreach (White.Core.UIItems.TableItems.TableRow tbr in Data.Rows) 
      numRows++; 

//get the last row in the table 
     White.Core.UIItems.TableItems.TableRow leaseRow = Data.Rows[numRows - 1]; 


     White.Core.UIItems.TableItems.TableCell PriceCell = leaseRow.Cells["price_val"]; 
     White.Core.UIItems.TableItems.TableCell NameCell = leaseRow.Cells["name_val"]; 


//set the values of the various cells in the table 
     PriceCell.Click(); 
     PriceCell.SetValue(pricingFormulaName); 
     PriceCell.Enter(pricingFormulaName); 

     NameCell.Click(); 
     NameCell.SetValue(feeScheduleName); 
     NameCell.Enter(feeScheduleName); 

    } 

回答

0

對於化合物Q &一個自動化的東西,我會強烈建議硒...你可以做任何一個HTML腳本,或在您的情況下,C#應用程序把它運行,並與硒可以指定

 driver.FindElement(By.XPath("//div[@id='Body']/form/div/div[2]/div[13]/div/div/div/div[2]/button")).Click(); 

或者

 driver.FindElement(By.XPath("//a[contains(text(),'[add]')]")).Click(); 

如果在CSS或者您可以通過ID調用它......而最好的部分是硒是開源...或者也許在SpecFlow中,您可以指定一個CSS選擇或XPath,就像我在Selenium中所做的一樣

相關問題